Linux 4.4.297
Greg Kroah-Hartman
maintainerI'm announcing the release of the 4.4.297 kernel.
All users of the 4.4 kernel series must upgrade.
The updated 4.4.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-4.4.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
------------
Documentation/networking/bonding.txt | 11 ++-- Makefile | 2 arch/arm/kernel/entry-armv.S | 8 +- drivers/block/xen-blkfront.c | 4 - drivers/hid/hid-holtek-mouse.c | 15 +++++ drivers/hwmon/lm90.c | 5 - drivers/infiniband/hw/qib/qib_user_sdma.c | 2 drivers/net/bonding/bond_options.c | 2 drivers/net/can/usb/kvaser_usb.c | 41 +++++++++++++-- drivers/net/ethernet/qlogic/qlcnic/qlcnic_sriov.h | 2 drivers/net/ethernet/qlogic/qlcnic/qlcnic_sriov_common.c | 12 +++- drivers/net/ethernet/qlogic/qlcnic/qlcnic_sriov_pf.c | 4 + drivers/net/ethernet/smsc/smc911x.c | 5 + drivers/net/hamradio/mkiss.c | 5 + drivers/net/usb/lan78xx.c | 6 ++ net/ax25/af_ax25.c | 4 + net/phonet/pep.c | 2 sound/core/jack.c | 4 + sound/drivers/opl3/opl3_midi.c | 2 19 files changed, 102 insertions(+), 34 deletions(-)
Ard Biesheuvel (1):
ARM: 9169/1: entry: fix Thumb2 bug in iWMMXt exception handling
Benjamin Tissoires (1):
HID: holtek: fix mouse probing
Colin Ian King (1):
ALSA: drivers: opl3: Fix incorrect use of vp->state
Fernando Fernandez Mancera (1):
bonding: fix ad_actor_system option setting to default
Greg Jesionowski (1):
net: usb: lan78xx: add Allied Telesis AT29M2-AF
Greg Kroah-Hartman (1):
Linux 4.4.297
Guenter Roeck (1):
hwmon: (lm90) Fix usage of CONFIG2 register in detect function
Jiasheng Jiang (2):
qlcnic: potential dereference null pointer of rx_queue->page_ring
drivers: net: smc911x: Check for error irq
Jimmy Assarsson (1):
can: kvaser_usb: get CAN clock frequency from device
José Expósito (1):
IB/qib: Fix memory leak in qib_user_sdma_queue_pkts()
Juergen Gross (1):
xen/blkfront: fix bug in backported patch
Lin Ma (3):
ax25: NPD bug when detaching AX25 device
hamradio: defer ax25 kfree after unregister_netdev
hamradio: improve the incomplete fix to avoid NPD
Rémi Denis-Courmont (1):
phonet/pep: refuse to enable an unbound pipe
Xiaoke Wang (1):
ALSA: jack: Check the return value of kstrdup()
Greg Kroah-Hartman
maintainerDocumentation/networking/bonding.txt +6 -5
@@ -191,11 +191,12 @@ ad_actor_sys_prio ad_actor_system In an AD system, this specifies the mac-address for the actor in - protocol packet exchanges (LACPDUs). The value cannot be NULL or - multicast. It is preferred to have the local-admin bit set for this - mac but driver does not enforce it. If the value is not given then - system defaults to using the masters' mac address as actors' system - address. + protocol packet exchanges (LACPDUs). The value cannot be a multicast + address. If the all-zeroes MAC is specified, bonding will internally + use the MAC of the bond itself. It is preferred to have the + local-admin bit set for this mac but driver does not enforce it. If + the value is not given then system defaults to using the masters' + mac address as actors' system address. This parameter has effect only in 802.3ad mode and is available through SysFs interface.
Makefile +1 -1
@@ -1,6 +1,6 @@ VERSION = 4 PATCHLEVEL = 4 -SUBLEVEL = 296 +SUBLEVEL = 297 EXTRAVERSION = NAME = Blurry Fish Butt
arch/arm/kernel/entry-armv.S +3 -5
@@ -625,11 +625,9 @@ call_fpe: tstne r0, #0x04000000 @ bit 26 set on both ARM and Thumb-2 reteq lr and r8, r0, #0x00000f00 @ mask out CP number - THUMB( lsr r8, r8, #8 ) mov r7, #1 - add r6, r10, #TI_USED_CP - ARM( strb r7, [r6, r8, lsr #8] ) @ set appropriate used_cp[] - THUMB( strb r7, [r6, r8] ) @ set appropriate used_cp[] + add r6, r10, r8, lsr #8 @ add used_cp[] array offset first + strb r7, [r6, #TI_USED_CP] @ set appropriate used_cp[] #ifdef CONFIG_IWMMXT @ Test if we need to give access to iWMMXt coprocessors ldr r5, [r10, #TI_FLAGS]
@@ -638,7 +636,7 @@ call_fpe: bcs iwmmxt_task_enable #endif ARM( add pc, pc, r8, lsr #6 ) - THUMB( lsl r8, r8, #2 ) + THUMB( lsr r8, r8, #6 ) THUMB( add pc, r8 ) nop
drivers/block/xen-blkfront.c +0 -4
@@ -493,8 +493,6 @@ static int blkif_queue_discard_req(struct request *req)else ring_req->u.discard.flag =0 ; - info->ring.req_prod_pvt++; -/* Copy the request to the ring page. */ *final_ring_req = *ring_req; info->shadow[id].inflight = true;
@@ -711,8 +709,6 @@ static int blkif_queue_rw_req(struct request *req)if (setup.segments)kunmap_atomic (setup.segments); - info->ring.req_prod_pvt++; -/* Copy request(s) to the ring page. */ *final_ring_req = *ring_req; info->shadow[id].inflight = true;
drivers/hid/hid-holtek-mouse.c +15 -0
@@ -68,8 +68,23 @@ static __u8 *holtek_mouse_report_fixup(struct hid_device *hdev, __u8 *rdesc,static int holtek_mouse_probe (struct hid_device *hdev,const struct hid_device_id *id) { +int ret; +if (!hid_is_usb (hdev))return -EINVAL ; + + ret =hid_parse (hdev); +if (ret) { +hid_err (hdev,"hid parse failed: %d\n" , ret); +return ret; + } + + ret =hid_hw_start (hdev,HID_CONNECT_DEFAULT ); +if (ret) { +hid_err (hdev,"hw start failed: %d\n" , ret); +return ret; + } +return 0 ; }
drivers/hwmon/lm90.c +2 -3
@@ -1209,12 +1209,11 @@ static int lm90_detect(struct i2c_client *client,if (man_id <0 || chip_id <0 || config1 <0 || convrate <0 )return -ENODEV ; -if (man_id ==0x01 || man_id ==0x5C || man_id ==0x41 ) { +if (man_id ==0x01 || man_id ==0x5C || man_id ==0xA1 ) { config2 =i2c_smbus_read_byte_data (client,LM90_REG_R_CONFIG2 );if (config2 <0 )return -ENODEV ; - }else - config2 =0 ;/* Make compiler happy */ + }if ((address ==0x4C || address ==0x4D ) && man_id ==0x01 ) {/* National Semiconductor */
drivers/infiniband/hw/qib/qib_user_sdma.c +1 -1
@@ -946,7 +946,7 @@ static int qib_user_sdma_queue_pkts(const struct qib_devdata *dd, &addrlimit) || addrlimit > type_max(typeof(pkt->addrlimit))) { ret = -EINVAL ; - goto free_pbc; + goto free_pkt; } pkt->addrlimit = addrlimit;
drivers/net/bonding/bond_options.c +1 -1
@@ -1407,7 +1407,7 @@ static int bond_option_ad_actor_system_set(struct bonding *bond, mac = (u8 *)&newval->value; } -if (!is_valid_ether_addr (mac)) +if (is_multicast_ether_addr (mac)) goto err;netdev_info (bond->dev,"Setting ad_actor_system to %pM\n" , mac);
drivers/net/can/usb/kvaser_usb.c +36 -5
82 lines not on this page · raw message
drivers/net/ethernet/qlogic/qlcnic/qlcnic_sriov.h +1 -1
@@ -201,7 +201,7 @@ int qlcnic_sriov_get_vf_vport_info(struct qlcnic_adapter *, struct qlcnic_info *, u16);int qlcnic_sriov_cfg_vf_guest_vlan (struct qlcnic_adapter *,u16 ,u8 );void qlcnic_sriov_free_vlans (struct qlcnic_adapter *); -void qlcnic_sriov_alloc_vlans (struct qlcnic_adapter *); +int qlcnic_sriov_alloc_vlans (struct qlcnic_adapter *);bool qlcnic_sriov_check_any_vlan (struct qlcnic_vf_info *);void qlcnic_sriov_del_vlan_id (struct qlcnic_sriov *,struct qlcnic_vf_info *,u16 );
drivers/net/ethernet/qlogic/qlcnic/qlcnic_sriov_common.c +9 -3
@@ -427,7 +427,7 @@ static int qlcnic_sriov_set_guest_vlan_mode(struct qlcnic_adapter *adapter, struct qlcnic_cmd_args *cmd) {struct qlcnic_sriov *sriov = adapter->ahw->sriov; -int i, num_vlans; +int i, num_vlans, ret;u16 *vlans;if (sriov->allowed_vlans)
@@ -438,7 +438,9 @@ static int qlcnic_sriov_set_guest_vlan_mode(struct qlcnic_adapter *adapter,dev_info (&adapter->pdev->dev,"Number of allowed Guest VLANs = %d\n" , sriov->num_allowed_vlans); -qlcnic_sriov_alloc_vlans (adapter); + ret =qlcnic_sriov_alloc_vlans (adapter); +if (ret) +return ret;if (!sriov->any_vlan)return 0 ;
@@ -2147,7 +2149,7 @@ static int qlcnic_sriov_vf_resume(struct qlcnic_adapter *adapter)return err; } -void qlcnic_sriov_alloc_vlans (struct qlcnic_adapter *adapter) +int qlcnic_sriov_alloc_vlans (struct qlcnic_adapter *adapter) {struct qlcnic_sriov *sriov = adapter->ahw->sriov;struct qlcnic_vf_info *vf;
@@ -2157,7 +2159,11 @@ void qlcnic_sriov_alloc_vlans(struct qlcnic_adapter *adapter) vf = &sriov->vf_info[i]; vf->sriov_vlans =kcalloc (sriov->num_allowed_vlans,sizeof (*vf->sriov_vlans),GFP_KERNEL ); +if (!vf->sriov_vlans) +return -ENOMEM ; } + +return 0 ; }void qlcnic_sriov_free_vlans (struct qlcnic_adapter *adapter)
drivers/net/ethernet/qlogic/qlcnic/qlcnic_sriov_pf.c +3 -1
@@ -598,7 +598,9 @@ static int __qlcnic_pci_sriov_enable(struct qlcnic_adapter *adapter,if (err) goto del_flr_queue; -qlcnic_sriov_alloc_vlans (adapter); + err =qlcnic_sriov_alloc_vlans (adapter); +if (err) + goto del_flr_queue;return err;
drivers/net/ethernet/smsc/smc911x.c +5 -0
@@ -2057,6 +2057,11 @@ static int smc911x_drv_probe(struct platform_device *pdev) ndev->dma = (unsigned char )-1 ; ndev->irq =platform_get_irq (pdev,0 ); +if (ndev->irq <0 ) { + ret = ndev->irq; + goto release_both; + } + lp =netdev_priv (ndev); lp->netdev = ndev;#ifdef SMC_DYNAMIC_BUS_CONFIG
drivers/net/hamradio/mkiss.c +3 -2
@@ -803,13 +803,14 @@ static void mkiss_close(struct tty_struct *tty)*/ netif_stop_queue (ax->dev); -/* Free all AX25 frame buffers. */ +unregister_netdev (ax->dev); + +/* Free all AX25 frame buffers after unreg. */ kfree (ax->rbuff);kfree (ax->xbuff); ax->tty =NULL ; -unregister_netdev (ax->dev);free_netdev (ax->dev); }
drivers/net/usb/lan78xx.c +6 -0
@@ -66,6 +66,8 @@#define LAN7850_USB_PRODUCT_ID (0x7850)#define LAN78XX_EEPROM_MAGIC (0x78A5)#define LAN78XX_OTP_MAGIC (0x78F3) +#define AT29M2AF_USB_VENDOR_ID (0x07C9) +#define AT29M2AF_USB_PRODUCT_ID (0x0012)#define MII_READ 1#define MII_WRITE 0
@@ -3334,6 +3336,10 @@ static const struct usb_device_id products[] = {/* LAN7850 USB Gigabit Ethernet Device */ USB_DEVICE(LAN78XX_USB_VENDOR_ID, LAN7850_USB_PRODUCT_ID), }, + { +/* ATM2-AF USB Gigabit Ethernet Device */ + USB_DEVICE(AT29M2AF_USB_VENDOR_ID, AT29M2AF_USB_PRODUCT_ID), + }, {}, };MODULE_DEVICE_TABLE (usb, products);
net/ax25/af_ax25.c +3 -1
@@ -88,8 +88,10 @@ static void ax25_kill_by_device(struct net_device *dev) again:ax25_for_each (s, &ax25_list) {if (s->ax25_dev == ax25_dev) { - s->ax25_dev =NULL ;spin_unlock_bh (&ax25_list_lock); +lock_sock (s->sk); + s->ax25_dev =NULL ; +release_sock (s->sk);ax25_disconnect (s,ENETUNREACH );spin_lock_bh (&ax25_list_lock);
net/phonet/pep.c +2 -0
@@ -956,6 +956,8 @@ static int pep_ioctl(struct sock *sk, int cmd, unsigned long arg) ret = -EBUSY ; else if (sk->sk_state == TCP_ESTABLISHED) ret = -EISCONN ; + else if (!pn->pn_sk.sobject) + ret = -EADDRNOTAVAIL ; else ret =pep_sock_enable (sk,NULL ,0 );release_sock (sk);
sound/core/jack.c +4 -0
@@ -227,6 +227,10 @@ int snd_jack_new(struct snd_card *card, const char *id, int type,return -ENOMEM ; jack->id =kstrdup (id,GFP_KERNEL ); +if (jack->id ==NULL ) { +kfree (jack); +return -ENOMEM ; + }/* don't creat input device for phantom jack */ if (!phantom_jack) {
sound/drivers/opl3/opl3_midi.c +1 -1
@@ -415,7 +415,7 @@ void snd_opl3_note_on(void *p, int note, int vel, struct snd_midi_channel *chan) }if (instr_4op) { vp2 = &opl3->voices[voice +3 ]; -if (vp->state >0 ) { +if (vp2->state >0 ) { opl3_reg = reg_side | (OPL3_REG_KEYON_BLOCK + voice_offset +3 ); reg_val = vp->keyon_reg & ~OPL3_KEYON_BIT ;