Linux 2.6.37.4
Subsystems (22)
I'm announcing the release of the 2.6.37.4 kernel.
All users of the 2.6.37 kernel series must upgrade.
The updated 2.6.37.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-2.6.37.y.git
and can be browsed at the normal kernel.org git web browser:
http://git.kernel.org/?p=linux/kernel/git/stable/linux-2.6.37.y.git;a=summarythanks,
greg k-h
------------
Makefile | 2 arch/x86/kernel/cpu/cpufreq/pcc-cpufreq.c | 2 drivers/char/virtio_console.c | 8 +++ drivers/hid/hid-mosart.c | 4 + drivers/media/dvb/dvb-usb/dib0700_devices.c | 21 +++++++++- drivers/media/dvb/frontends/dib7000m.c | 19 +++++++++ drivers/media/dvb/frontends/dib7000m.h | 15 +++++++ drivers/media/video/cx23885/cx23885-i2c.c | 8 --- drivers/media/video/cx25840/cx25840-core.c | 3 - drivers/media/video/ivtv/ivtv-irq.c | 58 ++++++++++++++++++++++++---- drivers/misc/bmp085.c | 1 drivers/net/forcedeth.c | 2 drivers/net/ixgbe/ixgbe_main.c | 4 + drivers/net/r8169.c | 42 +++++++++++++++----- drivers/net/wireless/ath/ath9k/ath9k.h | 3 - drivers/net/wireless/ath/ath9k/init.c | 4 - drivers/net/wireless/ath/ath9k/main.c | 4 - drivers/s390/char/keyboard.c | 3 - fs/nfs/nfs4proc.c | 44 ++++++++++++++++++++- fs/nfs/nfs4xdr.c | 3 - fs/nfsd/nfs4xdr.c | 4 - include/keys/rxrpc-type.h | 1 include/linux/netdevice.h | 3 + kernel/cpuset.c | 7 ++- kernel/sched_rt.c | 14 ++++-- mm/mremap.c | 4 - net/core/dev.c | 12 ++++- net/ipv4/ip_gre.c | 1 net/ipv4/ipip.c | 1 net/ipv4/netfilter/arpt_mangle.c | 6 +- net/ipv6/ip6_tunnel.c | 1 net/ipv6/sit.c | 2 net/netfilter/ipvs/ip_vs_ctl.c | 4 - net/netfilter/nf_log.c | 4 + sound/pci/hda/patch_cirrus.c | 2 sound/pci/hda/patch_realtek.c | 7 --- sound/soc/codecs/wm9081.c | 5 ++ 37 files changed, 256 insertions(+), 72 deletions(-)
Amit Shah (1):
virtio: console: Don't access vqs if device was unplugged
Andy Walls (1):
cx23885: Revert "Check for slave nack on all transactions"
Anton Blanchard (1):
RxRPC: Fix v1 keys
Axel Lin (1):
drivers/misc/bmp085.c: add MODULE_DEVICE_TABLE
Balbir Singh (1):
sched: Fix sched rt group scheduling when hierachy is enabled
Benjamin Tissoires (1):
HID: hid-mosart: ignore buttons report
Chuck Lever (1):
NFS: NFSv4 readdir loses entries
Dan Carpenter (1):
keyboard: integer underflow bug
David Henningsson (1):
ALSA: HDA: Realtek: Fixup jack detection to input subsystem
Don Skidmore (1):
ixgbe: fix for 82599 erratum on Header Splitting
Francois Romieu (2):
r8169: RxFIFO overflow oddities with 8168 chipsets.
r8169: prevent RxFIFO induced loops in the irq handler.
Greg Kroah-Hartman (1):
Linux 2.6.37.4
Hugh Dickins (1):
mm: fix possible cause of a page_mapped BUG
Ivan Vecera (2):
r8169: use RxFIFO overflow workaround for 8168c chipset. drivers/net: Call netif_carrier_off at the end of the probe
Jan Engelhardt (1):
netfilter: nf_log: avoid oops in (un)bind with invalid nfproto values
Julian Anastasov (1):
ipvs: fix dst_lock locking on dest update
Li Zefan (1):
cpuset: add a missing unlock in cpuset_write_resmask()
Mark Brown (1):
ASoC: Fix WM9081 platform data initialisation
Michael (1):
ivtv: Fix corrective action taken upon DMA ERR interrupt to avoid hang
Mohammed Shafi Shajakhan (1):
ath9k: Fix ath9k prevents CPU to enter C3 states
Naga Chumbalkar (1):
pcc-cpufreq: don't load driver if get_freq fails during init.
Neil Horman (1):
nfs4: Ensure that ACL pages sent over NFS were not allocated from the slab (v3)
Olivier Grenie (1):
DiB7000M: add pid filtering
Pablo Neira Ayuso (1):
netfilter: arpt_mangle: fix return values of checkentry
Sven Barth (1):
cx25840: fix probing of cx2583x chips
Takashi Iwai (1):
ALSA: hda - Don't set to D3 in Cirrus errata init verbs
Vasiliy Kulikov (1):
net: don't allow CAP_NET_ADMIN to load non-netdev kernel modules
roel (1):
nfsd: wrong index used in inner loop
stephen hemminger (1):
ip6ip6: autoload ip6 tunnel
Makefile +1 -1
@@ -1,7 +1,7 @@ VERSION = 2 PATCHLEVEL = 6 SUBLEVEL = 37 -EXTRAVERSION = .3 +EXTRAVERSION = .4 NAME = Flesh-Eating Bats with Fangs # *DOCUMENTATION*
arch/x86/kernel/cpu/cpufreq/pcc-cpufreq.c +1 -1
@@ -195,7 +195,7 @@ static unsigned int pcc_get_freq(unsigned int cpu) cmd_incomplete:iowrite16 (0 , &pcch_hdr->status);spin_unlock (&pcc_lock); -return -EINVAL ; +return 0 ; } static int pcc_cpufreq_target(struct cpufreq_policy *policy,
drivers/char/virtio_console.c +8 -0
@@ -387,6 +387,10 @@ static void discard_port_data(struct port *port)unsigned int len;int ret; +if (!port->portdev) { +/* Device has been unplugged. vqs are already gone. */ +return ; + } vq = port->in_vq;if (port->inbuf) buf = port->inbuf;
@@ -469,6 +473,10 @@ static void reclaim_consumed_buffers(struct port *port)void *buf;unsigned int len; +if (!port->portdev) { +/* Device has been unplugged. vqs are already gone. */ +return ; + }while ((buf =virtqueue_get_buf (port->out_vq, &len))) {kfree (buf); port->outvq_full = false;
drivers/hid/hid-mosart.c +4 -0
@@ -90,6 +90,10 @@ static int mosart_input_mapping(struct hid_device *hdev, struct hid_input *hi,case 0xff000000 :/* ignore HID features */ return -1 ; + +case HID_UP_BUTTON : +/* ignore buttons */ +return -1 ; }return 0 ;
drivers/media/dvb/dvb-usb/dib0700_devices.c +19 -2
@@ -870,6 +870,23 @@ static int dib7070p_tuner_attach(struct dvb_usb_adapter *adap)return 0 ; } +static int stk7700p_pid_filter (struct dvb_usb_adapter *adapter,int index, +u16 pid,int onoff) +{ +struct dib0700_state *st = adapter->dev->priv; +if (st->is_dib7000pc) +return dib7000p_pid_filter (adapter->fe, index, pid, onoff); +return dib7000m_pid_filter (adapter->fe, index, pid, onoff); +} + +static int stk7700p_pid_filter_ctrl (struct dvb_usb_adapter *adapter,int onoff) +{ +struct dib0700_state *st = adapter->dev->priv; +if (st->is_dib7000pc) +return dib7000p_pid_filter_ctrl (adapter->fe, onoff); +return dib7000m_pid_filter_ctrl (adapter->fe, onoff); +} +static int stk70x0p_pid_filter (struct dvb_usb_adapter *adapter,int index,u16 pid,int onoff) {return dib7000p_pid_filter (adapter->fe, index, pid, onoff);
@@ -1875,8 +1892,8 @@ struct dvb_usb_device_properties dib0700_devices[] = { { .caps = DVB_USB_ADAP_HAS_PID_FILTER | DVB_USB_ADAP_PID_FILTER_CAN_BE_TURNED_OFF, .pid_filter_count = 32, - .pid_filter = stk70x0p_pid_filter, - .pid_filter_ctrl = stk70x0p_pid_filter_ctrl, + .pid_filter = stk7700p_pid_filter, + .pid_filter_ctrl = stk7700p_pid_filter_ctrl, .frontend_attach = stk7700p_frontend_attach, .tuner_attach = stk7700p_tuner_attach,
drivers/media/dvb/frontends/dib7000m.c +19 -0
@@ -1285,6 +1285,25 @@ struct i2c_adapter * dib7000m_get_i2c_master(struct dvb_frontend *demod, enum di }EXPORT_SYMBOL (dib7000m_get_i2c_master); +int dib7000m_pid_filter_ctrl (struct dvb_frontend *fe,u8 onoff) +{ +struct dib7000m_state *state = fe->demodulator_priv; +u16 val =dib7000m_read_word (state,294 + state->reg_offs) &0xffef ; + val |= (onoff &0x1 ) <<4 ; +dprintk ("PID filter enabled %d" , onoff); +return dib7000m_write_word (state,294 + state->reg_offs, val); +} +EXPORT_SYMBOL (dib7000m_pid_filter_ctrl); + +int dib7000m_pid_filter (struct dvb_frontend *fe,u8 id,u16 pid,u8 onoff) +{ +struct dib7000m_state *state = fe->demodulator_priv; +dprintk ("PID filter: index %x, PID %d, OnOff %d" , id, pid, onoff); +return dib7000m_write_word (state,300 + state->reg_offs + id, + onoff ? (1 <<13 ) | pid :0 ); +} +EXPORT_SYMBOL (dib7000m_pid_filter); +#if 0 /* used with some prototype boards */ int dib7000m_i2c_enumeration(struct i2c_adapter *i2c, int no_of_demods,
drivers/media/dvb/frontends/dib7000m.h +15 -0
@@ -46,6 +46,8 @@ extern struct dvb_frontend *dib7000m_attach(struct i2c_adapter *i2c_adap,extern struct i2c_adapter *dib7000m_get_i2c_master (struct dvb_frontend *,enum dibx000_i2c_interface ,int ); +extern int dib7000m_pid_filter (struct dvb_frontend *,u8 id,u16 pid,u8 onoff); +extern int dib7000m_pid_filter_ctrl (struct dvb_frontend *fe,u8 onoff);#else static inline struct dvb_frontend *dib7000m_attach(struct i2c_adapter *i2c_adap,
@@ -63,6 +65,19 @@ struct i2c_adapter *dib7000m_get_i2c_master(struct dvb_frontend *demod,printk (KERN_WARNING "%s: driver disabled by Kconfig\n" , __func__); return NULL; } +static inline int dib7000m_pid_filter (struct dvb_frontend *fe,u8 id, +u16 pid,u8 onoff) +{ +printk (KERN_WARNING "%s: driver disabled by Kconfig\n" , __func__); +return -ENODEV ; +} + +static inline int dib7000m_pid_filter_ctrl (struct dvb_frontend *fe, +uint8_t onoff) +{ +printk (KERN_WARNING "%s: driver disabled by Kconfig\n" , __func__); +return -ENODEV ; +}#endif /* TODO
drivers/media/video/cx23885/cx23885-i2c.c +0 -8
@@ -122,10 +122,6 @@ static int i2c_sendbytes(struct i2c_adapter *i2c_adap,if (!i2c_wait_done (i2c_adap)) goto eio; -if (!i2c_slave_did_ack (i2c_adap)) { - retval = -ENXIO ; - goto err; - }if (i2c_debug) {printk (" <W %02x %02x" , msg->addr <<1 , msg->buf[0 ]);if (!(ctrl &I2C_NOSTOP ))
@@ -209,10 +205,6 @@ static int i2c_readbytes(struct i2c_adapter *i2c_adap,if (!i2c_wait_done (i2c_adap)) goto eio; -if (cnt ==0 && !i2c_slave_did_ack (i2c_adap)) { - retval = -ENXIO ; - goto err; - } msg->buf[cnt] =cx_read (bus->reg_rdata) &0xff ;if (i2c_debug) {dprintk (1 ," %02x" , msg->buf[cnt]);
drivers/media/video/cx25840/cx25840-core.c +2 -1
@@ -2031,7 +2031,8 @@ static int cx25840_probe(struct i2c_client *client,kfree (state);return err; } -v4l2_ctrl_cluster (2 , &state->volume); +if (!is_cx2583x (state)) +v4l2_ctrl_cluster (2 , &state->volume);v4l2_ctrl_handler_setup (&state->hdl);cx25840_ir_probe (sd);
drivers/media/video/ivtv/ivtv-irq.c +51 -7
73 lines not on this page · raw message
drivers/misc/bmp085.c +1 -0
@@ -449,6 +449,7 @@ static const struct i2c_device_id bmp085_id[] = { { "bmp085", 0 }, { } }; +MODULE_DEVICE_TABLE(i2c, bmp085_id); static struct i2c_driver bmp085_driver = { .driver = {
drivers/net/forcedeth.c +2 -0
@@ -5816,6 +5816,8 @@ static int __devinit nv_probe(struct pci_dev *pci_dev, const struct pci_device_i goto out_error; } +netif_carrier_off (dev); + dev_printk(KERN_INFO, &pci_dev->dev, "ifname %s, PHY OUI 0x%x @ %d, " "addr %2.2x:%2.2x:%2.2x:%2.2x:%2.2x:%2.2x\n", dev->name,
drivers/net/ixgbe/ixgbe_main.c +4 -0
@@ -2923,6 +2923,10 @@ static void ixgbe_set_rx_buffer_len(struct ixgbe_adapter *adapter)if (hw->mac.type == ixgbe_mac_82599EB) adapter->flags &= ~IXGBE_FLAG_RX_PS_ENABLED ; +/* Disable packet split due to 82599 erratum #45 */ +if (hw->mac.type == ixgbe_mac_82599EB) + adapter->flags &= ~IXGBE_FLAG_RX_PS_ENABLED ; +/* Set the RX buffer length according to the mode */ if (adapter->flags &IXGBE_FLAG_RX_PS_ENABLED ) { rx_buf_len =IXGBE_RX_HDR_SIZE ;
drivers/net/r8169.c +33 -9
72 lines not on this page · raw message
drivers/net/wireless/ath/ath9k/ath9k.h +0 -3
@@ -21,7 +21,6 @@#include <linux/device.h> #include <linux/leds.h> #include <linux/completion.h> -#include <linux/pm_qos_params.h> #include "debug.h" #include "common.h"
@@ -647,8 +646,6 @@ struct ath_softc {struct ath_descdma txsdma;struct ath_ant_comb ant_comb; - -struct pm_qos_request_list pm_qos_req; };struct ath_wiphy {
drivers/net/wireless/ath/ath9k/init.c +0 -4
@@ -758,9 +758,6 @@ int ath9k_init_device(u16 devid, struct ath_softc *sc, u16 subsysid,ath_init_leds (sc);ath_start_rfkill_poll (sc); -pm_qos_add_request (&sc->pm_qos_req,PM_QOS_CPU_DMA_LATENCY , -PM_QOS_DEFAULT_VALUE ); -return 0 ; error_world:
@@ -829,7 +826,6 @@ void ath9k_deinit_device(struct ath_softc *sc) }ieee80211_unregister_hw (hw); -pm_qos_remove_request (&sc->pm_qos_req);ath_rx_cleanup (sc);ath_tx_cleanup (sc);ath9k_deinit_softc (sc);
drivers/net/wireless/ath/ath9k/main.c +0 -4
@@ -1245,8 +1245,6 @@ static int ath9k_start(struct ieee80211_hw *hw)ath9k_btcoex_timer_resume (sc); } -pm_qos_update_request (&sc->pm_qos_req,55 ); - mutex_unlock:mutex_unlock (&sc->mutex);
@@ -1425,8 +1423,6 @@ static void ath9k_stop(struct ieee80211_hw *hw) sc->sc_flags |=SC_OP_INVALID ; -pm_qos_update_request (&sc->pm_qos_req,PM_QOS_DEFAULT_VALUE ); -mutex_unlock (&sc->mutex);ath_print (common,ATH_DBG_CONFIG ,"Driver halt\n" );
drivers/s390/char/keyboard.c +2 -1
@@ -460,7 +460,8 @@ kbd_ioctl(struct kbd_data *kbd, struct file *file, unsigned int cmd, unsigned long arg) {void __user *argp; -int ct, perm; +unsigned int ct; +int perm; argp = (void __user *)arg;
fs/nfs/nfs4proc.c +42 -2
67 lines not on this page · raw message
fs/nfs/nfs4xdr.c +0 -3
@@ -6212,9 +6212,6 @@ __be32 *nfs4_decode_dirent(struct xdr_stream *xdr, struct nfs_entry *entry,if (entry->fattr->valid &NFS_ATTR_FATTR_TYPE ) entry->d_type =nfs_umode_to_dtype (entry->fattr->mode); -if (verify_attr_len (xdr, p, len) <0 ) - goto out_overflow; -return p; out_overflow:
fs/nfsd/nfs4xdr.c +2 -2
@@ -1107,7 +1107,7 @@ nfsd4_decode_create_session(struct nfsd4_compoundargs *argp,u32 dummy;char *machine_name; -int i; +int i, j;int nr_secflavs;READ_BUF (16 );
@@ -1180,7 +1180,7 @@ nfsd4_decode_create_session(struct nfsd4_compoundargs *argp,READ_BUF (4 );READ32 (dummy);READ_BUF (dummy *4 ); -for (i =0 ; i < dummy; ++i) +for (j =0 ; j < dummy; ++j)READ32 (dummy);break ;case RPC_AUTH_GSS :
include/keys/rxrpc-type.h +0 -1
@@ -99,7 +99,6 @@ struct rxrpc_key_token {* structure of raw payloads passed to add_key() or instantiate key */ struct rxrpc_key_data_v1 { -u32 kif_version;/* 1 */ u16 security_index;u16 ticket_length;u32 expiry;/* time_t */
include/linux/netdevice.h +3 -0
@@ -2336,6 +2336,9 @@ extern int netdev_notice(const struct net_device *dev, const char *format, ...)extern int netdev_info (const struct net_device *dev,const char *format, ...) __attribute__ ((format (printf,2 ,3 ))); +#define MODULE_ALIAS_NETDEV (device) \ + MODULE_ALIAS("netdev-" device) +#if defined(DEBUG ) #define netdev_dbg(__dev, format, args...) \ netdev_printk(KERN_DEBUG, __dev, format, ##args)
kernel/cpuset.c +5 -2
@@ -1575,8 +1575,10 @@ static int cpuset_write_resmask(struct cgroup *cgrp, struct cftype *cft,return -ENODEV ; trialcs =alloc_trial_cpuset (cs); -if (!trialcs) -return -ENOMEM ; +if (!trialcs) { + retval = -ENOMEM ; + goto out; + }switch (cft->private) {case FILE_CPULIST :
@@ -1591,6 +1593,7 @@ static int cpuset_write_resmask(struct cgroup *cgrp, struct cftype *cft, }free_trial_cpuset (trialcs); +out:cgroup_unlock ();return retval; }
kernel/sched_rt.c +9 -5
@@ -199,11 +199,12 @@ static void dequeue_rt_entity(struct sched_rt_entity *rt_se);static void sched_rt_rq_enqueue (struct rt_rq *rt_rq) { -int this_cpu =smp_processor_id ();struct task_struct *curr =rq_of_rt_rq (rt_rq)->curr;struct sched_rt_entity *rt_se; - rt_se = rt_rq->tg->rt_se[this_cpu]; +int cpu =cpu_of (rq_of_rt_rq (rt_rq)); + + rt_se = rt_rq->tg->rt_se[cpu];if (rt_rq->rt_nr_running) {if (rt_se && !on_rt_rq (rt_se))
@@ -215,10 +216,10 @@ static void sched_rt_rq_enqueue(struct rt_rq *rt_rq)static void sched_rt_rq_dequeue (struct rt_rq *rt_rq) { -int this_cpu =smp_processor_id ();struct sched_rt_entity *rt_se; +int cpu =cpu_of (rq_of_rt_rq (rt_rq)); - rt_se = rt_rq->tg->rt_se[this_cpu]; + rt_se = rt_rq->tg->rt_se[cpu];if (rt_se &&on_rt_rq (rt_se))dequeue_rt_entity (rt_se);
@@ -546,8 +547,11 @@ static int do_sched_rt_period_timer(struct rt_bandwidth *rt_b, int overrun)if (rt_rq->rt_time || rt_rq->rt_nr_running) idle =0 ;raw_spin_unlock (&rt_rq->rt_runtime_lock); - }else if (rt_rq->rt_nr_running) + }else if (rt_rq->rt_nr_running) { idle =0 ; +if (!rt_rq_throttled (rt_rq)) + enqueue =1 ; + }if (enqueue)sched_rt_rq_enqueue (rt_rq);
mm/mremap.c +1 -3
@@ -91,9 +91,7 @@ static void move_ptes(struct vm_area_struct *vma, pmd_t *old_pmd,*/ mapping = vma->vm_file->f_mapping;spin_lock (&mapping->i_mmap_lock); -if (new_vma->vm_truncate_count && - new_vma->vm_truncate_count != vma->vm_truncate_count) - new_vma->vm_truncate_count =0 ; + new_vma->vm_truncate_count =0 ; }/*
net/core/dev.c +10 -2
@@ -1116,13 +1116,21 @@ EXPORT_SYMBOL(netdev_bonding_change);void dev_load (struct net *net,const char *name) {struct net_device *dev; +int no_module;rcu_read_lock (); dev =dev_get_by_name_rcu (net, name);rcu_read_unlock (); -if (!dev &&capable (CAP_NET_ADMIN )) -request_module ("%s" , name); + no_module = !dev; +if (no_module &&capable (CAP_NET_ADMIN )) + no_module =request_module ("netdev-%s" , name); +if (no_module &&capable (CAP_SYS_MODULE )) { +if (!request_module ("%s" , name)) +pr_err ("Loading kernel module for a network device " +"with CAP_SYS_MODULE (deprecated). Use CAP_NET_ADMIN and alias netdev-%s " +"instead\n" , name); + } }EXPORT_SYMBOL (dev_load);
net/ipv4/ip_gre.c +1 -0
@@ -1775,3 +1775,4 @@ module_exit(ipgre_fini);MODULE_LICENSE ("GPL" );MODULE_ALIAS_RTNL_LINK ("gre" );MODULE_ALIAS_RTNL_LINK ("gretap" ); +MODULE_ALIAS_NETDEV ("gre0" );
net/ipv4/ipip.c +1 -0
@@ -921,3 +921,4 @@ static void __exit ipip_fini(void)module_init (ipip_init);module_exit (ipip_fini);MODULE_LICENSE ("GPL" ); +MODULE_ALIAS_NETDEV ("tunl0" );
net/ipv4/netfilter/arpt_mangle.c +3 -3
@@ -60,12 +60,12 @@ static int checkentry(const struct xt_tgchk_param *par)if (mangle->flags & ~ARPT_MANGLE_MASK || !(mangle->flags &ARPT_MANGLE_MASK )) -return false; +return -EINVAL ;if (mangle->target !=NF_DROP && mangle->target !=NF_ACCEPT && mangle->target !=XT_CONTINUE ) -return false; -return true; +return -EINVAL ; +return 0 ; }static struct xt_target arpt_mangle_reg__read_mostly = {
net/ipv6/ip6_tunnel.c +1 -0
@@ -57,6 +57,7 @@MODULE_AUTHOR ("Ville Nuorvala" );MODULE_DESCRIPTION ("IPv6 tunneling device" );MODULE_LICENSE ("GPL" ); +MODULE_ALIAS_NETDEV ("ip6tnl0" );#define IPV6_TLV_TEL_DST_SIZE 8
net/ipv6/sit.c +1 -1
@@ -1292,4 +1292,4 @@ static int __init sit_init(void)module_init (sit_init);module_exit (sit_cleanup);MODULE_LICENSE ("GPL" ); -MODULE_ALIAS ("sit0" ); +MODULE_ALIAS_NETDEV ("sit0" );
net/netfilter/ipvs/ip_vs_ctl.c +2 -2
@@ -810,9 +810,9 @@ __ip_vs_update_dest(struct ip_vs_service *svc, struct ip_vs_dest *dest, dest->u_threshold = udest->u_threshold; dest->l_threshold = udest->l_threshold; -spin_lock (&dest->dst_lock); +spin_lock_bh (&dest->dst_lock);ip_vs_dst_reset (dest); -spin_unlock (&dest->dst_lock); +spin_unlock_bh (&dest->dst_lock);if (add)ip_vs_new_estimator (&dest->stats);
net/netfilter/nf_log.c +4 -0
@@ -85,6 +85,8 @@ EXPORT_SYMBOL(nf_log_unregister);int nf_log_bind_pf (u_int8_t pf,const struct nf_logger *logger) { +if (pf >=ARRAY_SIZE (nf_loggers)) +return -EINVAL ;mutex_lock (&nf_log_mutex);if (__find_logger (pf, logger->name) ==NULL ) {mutex_unlock (&nf_log_mutex);
@@ -98,6 +100,8 @@ EXPORT_SYMBOL(nf_log_bind_pf);void nf_log_unbind_pf (u_int8_t pf) { +if (pf >=ARRAY_SIZE (nf_loggers)) +return ;mutex_lock (&nf_log_mutex);rcu_assign_pointer (nf_loggers[pf],NULL );mutex_unlock (&nf_log_mutex);
sound/pci/hda/patch_cirrus.c +2 -0
@@ -1039,9 +1039,11 @@ static struct hda_verb cs_errata_init_verbs[] = { {0x11, AC_VERB_SET_PROC_COEF, 0x0008}, {0x11, AC_VERB_SET_PROC_STATE, 0x00}, +#if 0 /* Don't to set to D3 as we are in power-up sequence */ {0x07, AC_VERB_SET_POWER_STATE, 0x03}, /* S/PDIF Rx: D3 */ {0x08, AC_VERB_SET_POWER_STATE, 0x03}, /* S/PDIF Tx: D3 */ /*{0x01, AC_VERB_SET_POWER_STATE, 0x03},*/ /* AFG: D3 This is already handled */ +#endif {} /* terminator */ };
sound/pci/hda/patch_realtek.c +2 -5
@@ -1127,11 +1127,8 @@ static void alc_automute_speaker(struct hda_codec *codec, int pinctl) nid = spec->autocfg.hp_pins[i];if (!nid)break ; -if (snd_hda_jack_detect (codec, nid)) { - spec->jack_present =1 ; -break ; - } -alc_report_jack (codec, spec->autocfg.hp_pins[i]); +alc_report_jack (codec, nid); + spec->jack_present |=snd_hda_jack_detect (codec, nid); } mute = spec->jack_present ?HDA_AMP_MUTE :0 ;
sound/soc/codecs/wm9081.c +5 -0
@@ -15,6 +15,7 @@#include <linux/moduleparam.h> #include <linux/init.h> #include <linux/delay.h> +#include <linux/device.h> #include <linux/pm.h> #include <linux/i2c.h> #include <linux/platform_device.h>
@@ -1338,6 +1339,10 @@ static __devinit int wm9081_i2c_probe(struct i2c_client *i2c, wm9081->control_type =SND_SOC_I2C ; wm9081->control_data = i2c; +if (dev_get_platdata (&i2c->dev)) +memcpy (&wm9081->retune,dev_get_platdata (&i2c->dev), +sizeof (wm9081->retune)); + ret =snd_soc_register_codec (&i2c->dev, &soc_codec_dev_wm9081, &wm9081_dai,1 );if (ret <0 )