Linux 4.9.333
Greg Kroah-Hartman
maintainerI'm announcing the release of the 4.9.333 kernel.
All users of the 4.9 kernel series must upgrade.
The updated 4.9.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-4.9.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary
thanks,
greg k-h
------------
Makefile | 2 arch/x86/kvm/cpuid.c | 1 arch/x86/kvm/emulate.c | 102 +++++++++++----- drivers/ata/pata_legacy.c | 5 drivers/i2c/busses/i2c-xiic.c | 1 drivers/isdn/hardware/mISDN/netjet.c | 2 drivers/isdn/mISDN/core.c | 5 drivers/media/dvb-frontends/drxk_hard.c | 2 drivers/net/ethernet/freescale/fec_main.c | 4 drivers/net/phy/mdio_bus.c | 2 drivers/net/wireless/broadcom/brcm80211/brcmfmac/fweh.c | 4 drivers/nfc/nfcmrvl/i2c.c | 7 - drivers/nfc/s3fwrn5/core.c | 8 - drivers/parisc/iosapic.c | 1 drivers/staging/media/s5p-cec/s5p_cec.c | 2 drivers/tty/serial/8250/Kconfig | 2 fs/btrfs/export.c | 2 fs/btrfs/export.h | 2 fs/btrfs/tests/qgroup-tests.c | 20 ++- fs/ext4/migrate.c | 3 fs/nfs/nfs4client.c | 1 fs/nfs/nfs4state.c | 2 net/bluetooth/l2cap_core.c | 52 ++++++-- net/netfilter/ipvs/ip_vs_conn.c | 4 net/rose/rose_link.c | 3 net/sched/sch_red.c | 4 sound/usb/quirks-table.h | 58 +++++++++ sound/usb/quirks.c | 1 28 files changed, 240 insertions(+), 62 deletions(-)
Dan Carpenter (1):
net: sched: Fix use after free in red_enqueue()
David Sterba (1):
btrfs: fix type of parameter generation in btrfs_get_dentry
Dokyung Song (1):
wifi: brcmfmac: Fix potential buffer overflow in brcmf_fweh_event_worker()
Filipe Manana (1):
btrfs: fix ulist leaks in error paths of qgroup self tests
Gaosheng Cui (1):
net: mdio: fix undefined behavior in bit shift for __mdiobus_register
Greg Kroah-Hartman (1):
Linux 4.9.333
Hans Verkuil (2):
media: s5p_cec: limit msg.len to CEC_MAX_MSG_SIZE
media: dvb-frontends/drxk: initialize err to 0
Helge Deller (2):
parisc: Make 8250_gsc driver dependend on CONFIG_PARISC
parisc: Export iosapic_serial_irq() symbol for serial port driver
Jason A. Donenfeld (1):
ipvs: use explicitly signed chars
Jim Mattson (1):
KVM: x86: Mask off reserved bits in CPUID.80000008H
John Veness (1):
ALSA: usb-audio: Add quirks for MacroSilicon MS2100/MS2106 devices
Luiz Augusto von Dentz (1):
Bluetooth: L2CAP: Fix attempting to access uninitialized memory
Martin Tůma (1):
i2c: xiic: Add platform module alias
Maxim Levitsky (3):
KVM: x86: emulator: em_sysexit should update ctxt->mode
KVM: x86: emulator: introduce emulator_recalc_and_set_mode
KVM: x86: emulator: update the emulation mode after CR0 write
Maxim Mikityanskiy (1):
Bluetooth: L2CAP: Fix use-after-free caused by l2cap_reassemble_sdu
Sergey Shtylyov (1):
ata: pata_legacy: fix pdc20230_set_piomode()
Shang XiaoJing (2):
nfc: s3fwrn5: Fix potential memory leak in s3fwrn5_nci_send()
nfc: nfcmrvl: Fix potential memory leak in nfcmrvl_i2c_nci_send()
Trond Myklebust (2):
NFSv4.1: Handle RECLAIM_COMPLETE trunking errors NFSv4.1: We must always send RECLAIM_COMPLETE after a reboot
Yang Yingliang (2):
mISDN: fix possible memory leak in mISDN_register_device()
isdn: mISDN: netjet: fix wrong check of device registration
Ye Bin (1):
ext4: fix warning in 'ext4_da_release_space'
Zhang Changzhong (1):
net: fec: fix improper use of NETDEV_TX_BUSY
Zhang Qilong (1):
rose: Fix NULL pointer dereference in rose_send_frame()
Zhang Xiaoxu (1):
nfs4: Fix kmemleak when allocate slot failed
Zhengchao Shao (1):
Bluetooth: L2CAP: fix use-after-free in l2cap_conn_del()
Greg Kroah-Hartman
maintainerMakefile +1 -1
@@ -1,6 +1,6 @@ VERSION = 4 PATCHLEVEL = 9 -SUBLEVEL = 332 +SUBLEVEL = 333 EXTRAVERSION = NAME = Roaring Lionus
arch/x86/kvm/cpuid.c +1 -0
@@ -647,6 +647,7 @@ static inline int __do_cpuid_ent(struct kvm_cpuid_entry2 *entry, u32 function, g_phys_as = phys_as; entry->eax = g_phys_as | (virt_as <<8 ); + entry->ecx &= ~(GENMASK (31 ,16 ) |GENMASK (11 ,8 )); entry->edx =0 ;/* * IBRS, IBPB and VIRT_SSBD aren't necessarily present in
arch/x86/kvm/emulate.c +73 -29
160 lines not on this page · raw message
drivers/ata/pata_legacy.c +3 -2
@@ -292,9 +292,10 @@ static void pdc20230_set_piomode(struct ata_port *ap, struct ata_device *adev)outb (inb (0x1F4 ) &0x07 ,0x1F4 ); rt =inb (0x1F3 ); - rt &=0x07 << (3 * adev->devno); + rt &= ~(0x07 << (3 * !adev->devno));if (pio) - rt |= (1 +3 * pio) << (3 * adev->devno); + rt |= (1 +3 * pio) << (3 * !adev->devno); +outb (rt,0x1F3 );udelay (100 );outb (inb (0x1F2 ) |0x01 ,0x1F2 );
drivers/i2c/busses/i2c-xiic.c +1 -0
@@ -897,6 +897,7 @@ static struct platform_driver xiic_i2c_driver = {module_platform_driver (xiic_i2c_driver); +MODULE_ALIAS ("platform:" DRIVER_NAME );MODULE_AUTHOR ("[email protected]" );MODULE_DESCRIPTION ("Xilinx I2C bus driver" );MODULE_LICENSE ("GPL v2" );
drivers/isdn/hardware/mISDN/netjet.c +1 -1
@@ -970,7 +970,7 @@ nj_release(struct tiger_hw *card) }if (card->irq >0 )free_irq (card->irq, card); -if (card->isac.dch.dev.dev.class) +if (device_is_registered (&card->isac.dch.dev.dev))mISDN_unregister_device (&card->isac.dch.dev);for (i =0 ; i <2 ; i++) {
drivers/isdn/mISDN/core.c +3 -2
@@ -242,11 +242,12 @@ mISDN_register_device(struct mISDNdevice *dev,if (debug &DEBUG_CORE )printk (KERN_DEBUG "mISDN_register %s %d\n" ,dev_name (&dev->dev), dev->id); + dev->dev.class = &mISDN_class; + err =create_stack (dev);if (err) goto error1; - dev->dev.class = &mISDN_class; dev->dev.platform_data = dev; dev->dev.parent = parent;dev_set_drvdata (&dev->dev, dev);
@@ -258,8 +259,8 @@ mISDN_register_device(struct mISDNdevice *dev, error3:delete_stack (dev); -return err; error1: +put_device (&dev->dev);return err; }
drivers/media/dvb-frontends/drxk_hard.c +1 -1
@@ -6697,7 +6697,7 @@ static int drxk_read_snr(struct dvb_frontend *fe, u16 *snr)static int drxk_read_ucblocks (struct dvb_frontend *fe,u32 *ucblocks) {struct drxk_state *state = fe->demodulator_priv; -u16 err; +u16 err =0 ;dprintk (1 ,"\n" );
drivers/net/ethernet/freescale/fec_main.c +2 -2
@@ -577,7 +577,7 @@ fec_enet_txq_put_data_tso(struct fec_enet_priv_tx_q *txq, struct sk_buff *skb,dev_kfree_skb_any (skb);if (net_ratelimit ())netdev_err (ndev,"Tx DMA memory map failed\n" ); -return NETDEV_TX_BUSY ; +return NETDEV_TX_OK ; } bdp->cbd_datlen =cpu_to_fec16 (size);
@@ -639,7 +639,7 @@ fec_enet_txq_put_hdr_tso(struct fec_enet_priv_tx_q *txq,dev_kfree_skb_any (skb);if (net_ratelimit ())netdev_err (ndev,"Tx DMA memory map failed\n" ); -return NETDEV_TX_BUSY ; +return NETDEV_TX_OK ; } }
drivers/net/phy/mdio_bus.c +1 -1
@@ -335,7 +335,7 @@ int __mdiobus_register(struct mii_bus *bus, struct module *owner) bus->reset (bus);for (i =0 ; i <PHY_MAX_ADDR ; i++) { -if ((bus->phy_mask & (1 << i)) ==0 ) { +if ((bus->phy_mask &BIT (i)) ==0 ) {struct phy_device *phydev; phydev =mdiobus_scan (bus, i);
drivers/net/wireless/broadcom/brcm80211/brcmfmac/fweh.c +4 -0
@@ -237,6 +237,10 @@ static void brcmf_fweh_event_worker(struct work_struct *work)brcmf_fweh_event_name (event->code), event->code, event->emsg.ifidx, event->emsg.bsscfgidx, event->emsg.addr); +if (event->emsg.bsscfgidx >=BRCMF_MAX_IFS ) { +brcmf_err ("invalid bsscfg index: %u\n" , event->emsg.bsscfgidx); + goto event_free; + }/* convert event message */ emsg_be = &event->emsg;
drivers/nfc/nfcmrvl/i2c.c +6 -1
@@ -151,10 +151,15 @@ static int nfcmrvl_i2c_nci_send(struct nfcmrvl_private *priv, ret = -EREMOTEIO ; }else ret =0 ; + } + +if (ret) {kfree_skb (skb); +return ret; } -return ret; +consume_skb (skb); +return 0 ; } static void nfcmrvl_i2c_nci_update_config(struct nfcmrvl_private *priv,
drivers/nfc/s3fwrn5/core.c +6 -2
@@ -108,11 +108,15 @@ static int s3fwrn5_nci_send(struct nci_dev *ndev, struct sk_buff *skb) } ret =s3fwrn5_write (info, skb); -if (ret <0 ) +if (ret <0 ) {kfree_skb (skb); +mutex_unlock (&info->mutex); +return ret; + } +consume_skb (skb);mutex_unlock (&info->mutex); -return ret; +return 0 ; }static int s3fwrn5_nci_post_setup (struct nci_dev *ndev)
drivers/parisc/iosapic.c +1 -0
@@ -889,6 +889,7 @@ int iosapic_serial_irq(struct parisc_device *dev) return vi->txn_irq; } +EXPORT_SYMBOL (iosapic_serial_irq);#endif
drivers/staging/media/s5p-cec/s5p_cec.c +2 -0
@@ -112,6 +112,8 @@ static irqreturn_t s5p_cec_irq_handler(int irq, void *priv)dev_dbg (cec->dev,"Buffer overrun (worker did not process previous message)\n" ); cec->rx =STATE_BUSY ; cec->msg.len = status >>24 ; +if (cec->msg.len >CEC_MAX_MSG_SIZE ) + cec->msg.len =CEC_MAX_MSG_SIZE ; cec->msg.rx_status =CEC_RX_STATUS_OK ;s5p_cec_get_rx_buf (cec, cec->msg.len, cec->msg.msg);
drivers/tty/serial/8250/Kconfig +1 -1
@@ -105,7 +105,7 @@ config SERIAL_8250_CONSOLE config SERIAL_8250_GSC tristate - depends on SERIAL_8250 && GSC + depends on SERIAL_8250 && PARISC default SERIAL_8250 config SERIAL_8250_DMA
fs/btrfs/export.c +1 -1
@@ -56,7 +56,7 @@ static int btrfs_encode_fh(struct inode *inode, u32 *fh, int *max_len, }struct dentry *btrfs_get_dentry (struct super_block *sb,u64 objectid, -u64 root_objectid,u32 generation, +u64 root_objectid,u64 generation,int check_generation) {struct btrfs_fs_info *fs_info =btrfs_sb (sb);
fs/btrfs/export.h +1 -1
@@ -17,7 +17,7 @@ struct btrfs_fid { } __attribute__ ((packed));struct dentry *btrfs_get_dentry (struct super_block *sb,u64 objectid, -u64 root_objectid,u32 generation, +u64 root_objectid,u64 generation,int check_generation);struct dentry *btrfs_get_parent (struct dentry *child);
fs/btrfs/tests/qgroup-tests.c +15 -5
@@ -249,8 +249,10 @@ static int test_no_shared_qgroup(struct btrfs_root *root, ret =insert_normal_tree_ref (root, nodesize, nodesize,0 ,BTRFS_FS_TREE_OBJECTID ); -if (ret) +if (ret) { +ulist_free (old_roots);return ret; + } ret =btrfs_find_all_roots (&trans, fs_info, nodesize,0 , &new_roots);if (ret) {
@@ -283,8 +285,10 @@ static int test_no_shared_qgroup(struct btrfs_root *root, } ret =remove_extent_item (root, nodesize, nodesize); -if (ret) +if (ret) { +ulist_free (old_roots);return -EINVAL ; + } ret =btrfs_find_all_roots (&trans, fs_info, nodesize,0 , &new_roots);if (ret) {
@@ -346,8 +350,10 @@ static int test_multiple_refs(struct btrfs_root *root, ret =insert_normal_tree_ref (root, nodesize, nodesize,0 ,BTRFS_FS_TREE_OBJECTID ); -if (ret) +if (ret) { +ulist_free (old_roots);return ret; + } ret =btrfs_find_all_roots (&trans, fs_info, nodesize,0 , &new_roots);if (ret) {
@@ -379,8 +385,10 @@ static int test_multiple_refs(struct btrfs_root *root, ret =add_tree_ref (root, nodesize, nodesize,0 ,BTRFS_FIRST_FREE_OBJECTID ); -if (ret) +if (ret) { +ulist_free (old_roots);return ret; + } ret =btrfs_find_all_roots (&trans, fs_info, nodesize,0 , &new_roots);if (ret) {
@@ -418,8 +426,10 @@ static int test_multiple_refs(struct btrfs_root *root, ret =remove_extent_ref (root, nodesize, nodesize,0 ,BTRFS_FIRST_FREE_OBJECTID ); -if (ret) +if (ret) { +ulist_free (old_roots);return ret; + } ret =btrfs_find_all_roots (&trans, fs_info, nodesize,0 , &new_roots);if (ret) {
fs/ext4/migrate.c +2 -1
@@ -450,7 +450,8 @@ int ext4_ext_migrate(struct inode *inode)* already is extent-based, error out. */ if (!ext4_has_feature_extents (inode->i_sb) || - (ext4_test_inode_flag (inode,EXT4_INODE_EXTENTS ))) +ext4_test_inode_flag (inode,EXT4_INODE_EXTENTS ) || +ext4_has_inline_data (inode))return -EINVAL ;if (S_ISLNK (inode->i_mode) && inode->i_blocks ==0 )
fs/nfs/nfs4client.c +1 -0
@@ -326,6 +326,7 @@ int nfs40_init_client(struct nfs_client *clp) ret =nfs4_setup_slot_table (tbl,NFS4_MAX_SLOT_TABLE ,"NFSv4.0 transport Slot table" );if (ret) { +nfs4_shutdown_slot_table (tbl);kfree (tbl);return ret; }
fs/nfs/nfs4state.c +2 -0
@@ -1656,6 +1656,7 @@ static void nfs4_state_mark_reclaim_helper(struct nfs_client *clp,static void nfs4_state_start_reclaim_reboot (struct nfs_client *clp) { +set_bit (NFS4CLNT_RECLAIM_REBOOT , &clp->cl_state);/* Mark all delegations for reclaim */ nfs_delegation_mark_reclaim (clp);nfs4_state_mark_reclaim_helper (clp, nfs4_state_mark_reclaim_reboot);
@@ -2487,6 +2488,7 @@ static void nfs4_state_manager(struct nfs_client *clp)if (status <0 ) goto out_error;nfs4_state_end_reclaim_reboot (clp); +continue ; }/* Detect expired delegations... */
net/bluetooth/l2cap_core.c +44 -8
97 lines not on this page · raw message
net/netfilter/ipvs/ip_vs_conn.c +2 -2
@@ -1240,8 +1240,8 @@ static inline int todrop_entry(struct ip_vs_conn *cp)* The drop rate array needs tuning for real environments. * Called from timer bh only => no locking */ -static const char todrop_rate[9 ] = {0 ,1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 }; -static char todrop_counter[9 ] = {0 }; +static const signed char todrop_rate[9 ] = {0 ,1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 }; +static signed char todrop_counter[9 ] = {0 };int i;/* if the conn entry hasn't lasted for 60 seconds, don't drop it.
net/rose/rose_link.c +3 -0
@@ -241,6 +241,9 @@ void rose_transmit_clear_request(struct rose_neigh *neigh, unsigned int lci, unsunsigned char *dptr;int len; +if (!neigh->dev) +return ; + len =AX25_BPQ_HEADER_LEN +AX25_MAX_HEADER_LEN +ROSE_MIN_LEN +3 ;if ((skb =alloc_skb (len,GFP_ATOMIC )) ==NULL )
net/sched/sch_red.c +3 -1
@@ -61,6 +61,7 @@ static int red_enqueue(struct sk_buff *skb, struct Qdisc *sch, {struct red_sched_data *q =qdisc_priv (sch);struct Qdisc *child = q->qdisc; +unsigned int len;int ret; q->vars.qavg = red_calc_qavg(&q->parms,
@@ -96,9 +97,10 @@ static int red_enqueue(struct sk_buff *skb, struct Qdisc *sch,break ; } + len =qdisc_pkt_len (skb); ret =qdisc_enqueue (skb, child, to_free);if (likely (ret ==NET_XMIT_SUCCESS )) { -qdisc_qstats_backlog_inc (sch, skb); + sch->qstats.backlog += len; sch->q.qlen++; }else if (net_xmit_drop_count (ret)) { q->stats.pdrop++;
sound/usb/quirks-table.h +58 -0
64 lines not on this page · raw message
sound/usb/quirks.c +1 -0
@@ -1129,6 +1129,7 @@ void snd_usb_set_format_quirk(struct snd_usb_substream *subs,case USB_ID (0x041e ,0x3f19 ):/* E-Mu 0204 USB */ set_format_emu_quirk (subs, fmt);break ; +case USB_ID (0x534d ,0x0021 ):/* MacroSilicon MS2100/MS2106 */ case USB_ID (0x534d ,0x2109 ):/* MacroSilicon MS2109 */ subs->stream_offset_adj =2 ;break ;