4.4.297-rc1 review
Greg Kroah-Hartman
maintainercover 4.4.297-rc1 review
This is the start of the stable review cycle for the 4.4.297 release. There are 17 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
Responses should be made by Wed, 29 Dec 2021 15:13:09 +0000. Anything received after that time might be too late.
The whole patch series can be found in one patch at:
https://www.kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.4.297-rc1.gz
or in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-4.4.y
and the diffstat can be found below.
thanks,
greg k-h
-------------
Pseudo-Shortlog of commits:
Greg Kroah-Hartman <[email protected]>
Linux 4.4.297-rc1
Rémi Denis-Courmont <[email protected]>
phonet/pep: refuse to enable an unbound pipe
Lin Ma <[email protected]>
hamradio: improve the incomplete fix to avoid NPD
Lin Ma <[email protected]>
hamradio: defer ax25 kfree after unregister_netdev
Lin Ma <[email protected]>
ax25: NPD bug when detaching AX25 device
Samuel Čavoj <[email protected]>
Input: i8042 - enable deferred probe quirk for ASUS UM325UA
Juergen Gross <[email protected]>
xen/blkfront: fix bug in backported patch
Ard Biesheuvel <[email protected]>
ARM: 9169/1: entry: fix Thumb2 bug in iWMMXt exception handling
Colin Ian King <[email protected]>
ALSA: drivers: opl3: Fix incorrect use of vp->state
Xiaoke Wang <[email protected]>
ALSA: jack: Check the return value of kstrdup()
Guenter Roeck <[email protected]>
hwmon: (lm90) Fix usage of CONFIG2 register in detect function
Jiasheng Jiang <[email protected]>
drivers: net: smc911x: Check for error irq
Fernando Fernandez Mancera <[email protected]>
bonding: fix ad_actor_system option setting to default
Jiasheng Jiang <[email protected]>
qlcnic: potential dereference null pointer of rx_queue->page_ring
José Expósito <[email protected]>
IB/qib: Fix memory leak in qib_user_sdma_queue_pkts()
Benjamin Tissoires <[email protected]>
HID: holtek: fix mouse probing
Jimmy Assarsson <[email protected]>
can: kvaser_usb: get CAN clock frequency from device
Greg Jesionowski <[email protected]>
net: usb: lan78xx: add Allied Telesis AT29M2-AF
-------------
Diffstat:
Documentation/networking/bonding.txt | 11 +++--- Makefile | 4 +-- 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/input/serio/i8042-x86ia64io.h | 7 ++++ drivers/net/bonding/bond_options.c | 2 +- drivers/net/can/usb/kvaser_usb.c | 41 +++++++++++++++++++--- drivers/net/ethernet/qlogic/qlcnic/qlcnic_sriov.h | 2 +- .../ethernet/qlogic/qlcnic/qlcnic_sriov_common.c | 12 +++++-- .../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 +- 20 files changed, 110 insertions(+), 35 deletions(-)
Greg Kroah-Hartman
maintainerPATCH 1/17 net: usb: lan78xx: add Allied Telesis AT29M2-AF
From: Greg Jesionowski <[email protected]>
commit ef8a0f6eab1ca5d1a75c242c5c7b9d386735fa0a upstream.
This adds the vendor and product IDs for the AT29M2-AF which is a lan7801-based device.
--- drivers/net/usb/lan78xx.c | 6 ++++++ 1 file changed, 6 insertions(+)
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 produc/* 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);
Greg Kroah-Hartman
maintainerPATCH 2/17 can: kvaser_usb: get CAN clock frequency from device
In reply to Greg Kroah-HartmanFrom: Jimmy Assarsson <[email protected]>
commit fb12797ab1fef480ad8a32a30984844444eeb00d upstream.
The CAN clock frequency is used when calculating the CAN bittiming parameters. When wrong clock frequency is used, the device may end up with wrong bittiming parameters, depending on user requested bittiming parameters.
To avoid this, get the CAN clock frequency from the device. Various existing Kvaser Leaf products use different CAN clocks.
--- drivers/net/can/usb/kvaser_usb.c | 41 ++++++++++++++++++++++++++++++++++----- 1 file changed, 36 insertions(+), 5 deletions(-)
drivers/net/can/usb/kvaser_usb.c +36 -5
@@ -31,7 +31,10 @@#define USB_SEND_TIMEOUT 1000/* msecs */ #define USB_RECV_TIMEOUT 1000/* msecs */ #define RX_BUFFER_SIZE 3072 -#define CAN_USB_CLOCK 8000000 +#define KVASER_USB_CAN_CLOCK_8MHZ 8000000 +#define KVASER_USB_CAN_CLOCK_16MHZ 16000000 +#define KVASER_USB_CAN_CLOCK_24MHZ 24000000 +#define KVASER_USB_CAN_CLOCK_32MHZ 32000000#define MAX_NET_DEVICES 3#define MAX_USBCAN_NET_DEVICES 2
@@ -139,6 +142,12 @@ static inline bool kvaser_is_usbcan(cons#define CMD_LEAF_USB_THROTTLE 77#define CMD_LEAF_LOG_MESSAGE 106 +/* Leaf frequency options */ +#define KVASER_USB_LEAF_SWOPTION_FREQ_MASK 0x60 +#define KVASER_USB_LEAF_SWOPTION_FREQ_16_MHZ_CLK 0 +#define KVASER_USB_LEAF_SWOPTION_FREQ_32_MHZ_CLK BIT(5) +#define KVASER_USB_LEAF_SWOPTION_FREQ_24_MHZ_CLK BIT(6) +/* error factors */ #define M16C_EF_ACKE BIT(0)#define M16C_EF_CRCE BIT(1)
@@ -469,6 +478,8 @@ struct kvaser_usb {bool rxinitdone;void *rxbuf[MAX_RX_URBS ];dma_addr_t rxbuf_dma[MAX_RX_URBS ]; + +struct can_clock clock; };struct kvaser_usb_net_priv {
@@ -646,6 +657,27 @@ static int kvaser_usb_send_simple_msg(coreturn rc; } +static void kvaser_usb_get_software_info_leaf (struct kvaser_usb *dev, +const struct leaf_msg_softinfo *softinfo) +{ +u32 sw_options =le32_to_cpu (softinfo->sw_options); + + dev->fw_version =le32_to_cpu (softinfo->fw_version); + dev->max_tx_urbs =le16_to_cpu (softinfo->max_outstanding_tx); + +switch (sw_options &KVASER_USB_LEAF_SWOPTION_FREQ_MASK ) { +case KVASER_USB_LEAF_SWOPTION_FREQ_16_MHZ_CLK : + dev->clock.freq =KVASER_USB_CAN_CLOCK_16MHZ ; +break ; +case KVASER_USB_LEAF_SWOPTION_FREQ_24_MHZ_CLK : + dev->clock.freq =KVASER_USB_CAN_CLOCK_24MHZ ; +break ; +case KVASER_USB_LEAF_SWOPTION_FREQ_32_MHZ_CLK : + dev->clock.freq =KVASER_USB_CAN_CLOCK_32MHZ ; +break ; + } +} +static int kvaser_usb_get_software_info (struct kvaser_usb *dev) {struct kvaser_msg msg;
@@ -661,14 +693,13 @@ static int kvaser_usb_get_software_info(switch (dev->family) {case KVASER_LEAF : - dev->fw_version =le32_to_cpu (msg.u.leaf.softinfo.fw_version); - dev->max_tx_urbs = -le16_to_cpu (msg.u.leaf.softinfo.max_outstanding_tx); +kvaser_usb_get_software_info_leaf (dev, &msg.u.leaf.softinfo);break ;case KVASER_USBCAN : dev->fw_version =le32_to_cpu (msg.u.usbcan.softinfo.fw_version); dev->max_tx_urbs =le16_to_cpu (msg.u.usbcan.softinfo.max_outstanding_tx); + dev->clock.freq =KVASER_USB_CAN_CLOCK_8MHZ ;break ; }
@@ -1925,7 +1956,7 @@ static int kvaser_usb_init_one(struct uskvaser_usb_reset_tx_urb_contexts (priv); priv->can.state =CAN_STATE_STOPPED ; - priv->can.clock.freq =CAN_USB_CLOCK ; + priv->can.clock.freq = dev->clock.freq; priv->can.bittiming_const = &kvaser_usb_bittiming_const; priv->can.do_set_bittiming = kvaser_usb_set_bittiming; priv->can.do_set_mode = kvaser_usb_set_mode;
Greg Kroah-Hartman
maintainerPATCH 3/17 HID: holtek: fix mouse probing
In reply to Greg Kroah-HartmanFrom: Benjamin Tissoires <[email protected]>
commit 93a2207c254ca102ebbdae47b00f19bbfbfa7ecd upstream.
An overlook from the previous commit: we don't even parse or start the device, meaning that the device is not presented to user space.
--- drivers/hid/hid-holtek-mouse.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+)
drivers/hid/hid-holtek-mouse.c +15 -0
@@ -68,8 +68,23 @@ static __u8 *holtek_mouse_report_fixup(sstatic 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 ; }
Greg Kroah-Hartman
maintainerPATCH 4/17 IB/qib: Fix memory leak in qib_user_sdma_queue_pkts()
In reply to Greg Kroah-HartmanFrom: José Expósito <[email protected]>
[ Upstream commit bee90911e0138c76ee67458ac0d58b38a3190f65 ]
The wrong goto label was used for the error case and missed cleanup of the pkt allocation.
Addresses-Coverity-ID: 1493352 ("Resource leak")
--- drivers/infiniband/hw/qib/qib_user_sdma.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
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;
Signature · 1 line
2.34.1
Greg Kroah-Hartman
maintainerPATCH 5/17 qlcnic: potential dereference null pointer of rx_queue->page_ring
In reply to Greg Kroah-HartmanFrom: Jiasheng Jiang <[email protected]>
[ Upstream commit 60ec7fcfe76892a1479afab51ff17a4281923156 ]
The return value of kcalloc() needs to be checked.
To avoid dereference of null pointer in case of the failure of alloc. Therefore, it might be better to change the return type of qlcnic_sriov_alloc_vlans() and return -ENOMEM when alloc fails and return 0 the others.
Also, qlcnic_sriov_set_guest_vlan_mode() and __qlcnic_pci_sriov_enable() should deal with the return value of qlcnic_sriov_alloc_vlans().
--- drivers/net/ethernet/qlogic/qlcnic/qlcnic_sriov.h | 2 +- .../net/ethernet/qlogic/qlcnic/qlcnic_sriov_common.c | 12 +++++++++--- drivers/net/ethernet/qlogic/qlcnic/qlcnic_sriov_pf.c | 4 +++- 3 files changed, 13 insertions(+), 5 deletions(-)
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;
Signature · 1 line
2.34.1
Greg Kroah-Hartman
maintainerPATCH 6/17 bonding: fix ad_actor_system option setting to default
In reply to Greg Kroah-HartmanFrom: Fernando Fernandez Mancera <[email protected]>
[ Upstream commit 1c15b05baea71a5ff98235783e3e4ad227760876 ]
When 802.3ad bond mode is configured the ad_actor_system option is set to "00:00:00:00:00:00". But when trying to set the all-zeroes MAC as actors' system address it was failing with EINVAL.
An all-zeroes ethernet address is valid, only multicast addresses are not valid values.
--- Documentation/networking/bonding.txt | 11 ++++++----- drivers/net/bonding/bond_options.c | 2 +- 2 files changed, 7 insertions(+), 6 deletions(-)
Documentation/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.
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);
Signature · 1 line
2.34.1
Greg Kroah-Hartman
maintainerPATCH 7/17 drivers: net: smc911x: Check for error irq
In reply to Greg Kroah-HartmanFrom: Jiasheng Jiang <[email protected]>
[ Upstream commit cb93b3e11d405f20a405a07482d01147ef4934a3 ]
Because platform_get_irq() could fail and return error irq. Therefore, it might be better to check it if order to avoid the use of error irq.
--- drivers/net/ethernet/smsc/smc911x.c | 5 +++++ 1 file changed, 5 insertions(+)
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
Signature · 1 line
2.34.1
Greg Kroah-Hartman
maintainerPATCH 8/17 hwmon: (lm90) Fix usage of CONFIG2 register in detect function
In reply to Greg Kroah-HartmanFrom: Guenter Roeck <[email protected]>
[ Upstream commit fce15c45d3fbd9fc1feaaf3210d8e3f8b33dfd3a ]
The detect function had a comment "Make compiler happy" when id did not read the second configuration register. As it turns out, the code was checking the contents of this register for manufacturer ID 0xA1 (NXP Semiconductor/Philips), but never actually read the register. So it wasn't surprising that the compiler complained, and it indeed had a point. Fix the code to read the register contents for manufacturer ID 0xa1.
At the same time, the code was reading the register for manufacturer ID 0x41 (Analog Devices), but it was not using the results. In effect it was just checking if reading the register returned an error. That doesn't really add much if any value, so stop doing that.
--- drivers/hwmon/lm90.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-)
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 */
Signature · 1 line
2.34.1
Greg Kroah-Hartman
maintainerPATCH 9/17 ALSA: jack: Check the return value of kstrdup()
In reply to Greg Kroah-HartmanFrom: Xiaoke Wang <[email protected]>
commit c01c1db1dc632edafb0dff32d40daf4f9c1a4e19 upstream.
kstrdup() can return NULL, it is better to check the return value of it.
--- sound/core/jack.c | 4 ++++ 1 file changed, 4 insertions(+)
sound/core/jack.c +4 -0
@@ -227,6 +227,10 @@ int snd_jack_new(struct snd_card *card,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) {
Greg Kroah-Hartman
maintainerPATCH 10/17 ALSA: drivers: opl3: Fix incorrect use of vp->state
In reply to Greg Kroah-HartmanFrom: Colin Ian King <[email protected]>
commit 2dee54b289fbc810669a1b2b8a0887fa1c9a14d7 upstream.
Static analysis with scan-build has found an assignment to vp2 that is never used. It seems that the check on vp->state > 0 should be actually on vp2->state instead. Fix this.
This dates back to 2002, I found the offending commit from the git history git://git.kernel.org/pub/scm/linux/kernel/git/tglx/history.git,
commit 91e39521bbf6 ("[PATCH] ALSA patch for 2.5.4")
--- sound/drivers/opl3/opl3_midi.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
sound/drivers/opl3/opl3_midi.c +1 -1
@@ -415,7 +415,7 @@ void snd_opl3_note_on(void *p, int note, }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 ;
Greg Kroah-Hartman
maintainerPATCH 11/17 ARM: 9169/1: entry: fix Thumb2 bug in iWMMXt exception handling
In reply to Greg Kroah-HartmanFrom: Ard Biesheuvel <[email protected]>
commit 8536a5ef886005bc443c2da9b842d69fd3d7647f upstream.
The Thumb2 version of the FP exception handling entry code treats the register holding the CP number (R8) differently, resulting in the iWMMXT CP number check to be incorrect.
Fix this by unifying the ARM and Thumb2 code paths, and switch the order of the additions of the TI_USED_CP offset and the shifted CP index.
--- arch/arm/kernel/entry-armv.S | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-)
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
Greg Kroah-Hartman
maintainerPATCH 12/17 xen/blkfront: fix bug in backported patch
In reply to Greg Kroah-HartmanFrom: Juergen Gross <[email protected]>
The backport of commit 8f5a695d99000fc ("xen/blkfront: don't take local copy of a request from the ring page") to stable 4.4 kernel introduced a bug when adding the needed blkif_ring_get_request() function, as info->ring.req_prod_pvt was incremented twice now.
Fix that be deleting the now superfluous increments after calling that function.
--- drivers/block/xen-blkfront.c | 4 ---- 1 file changed, 4 deletions(-)
drivers/block/xen-blkfront.c +0 -4
@@ -493,8 +493,6 @@ static int blkif_queue_discard_req(strucelse 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 reqif (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;
Greg Kroah-Hartman
maintainerPATCH 13/17 Input: i8042 - enable deferred probe quirk for ASUS UM325UA
In reply to Greg Kroah-HartmanFrom: Samuel Čavoj <[email protected]>
commit 44ee250aeeabb28b52a10397ac17ffb8bfe94839 upstream.
The ASUS UM325UA suffers from the same issue as the ASUS UX425UA, which is a very similar laptop. The i8042 device is not usable immediately after boot and fails to initialize, requiring a deferred retry.
Enable the deferred probe quirk for the UM325UA.
--- drivers/input/serio/i8042-x86ia64io.h | 7 +++++++ 1 file changed, 7 insertions(+)
drivers/input/serio/i8042-x86ia64io.h +7 -0
@@ -1025,6 +1025,13 @@ static const struct dmi_system_id __init DMI_MATCH(DMI_PRODUCT_NAME, "TravelMate 4280"), }, }, + { + /* ASUS ZenBook UM325UA */ + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."), + DMI_MATCH(DMI_PRODUCT_NAME, "ZenBook UX325UA_UM325UA"), + }, + }, { } };
Greg Kroah-Hartman
maintainerPATCH 14/17 ax25: NPD bug when detaching AX25 device
In reply to Greg Kroah-HartmanFrom: Lin Ma <[email protected]>
commit 1ade48d0c27d5da1ccf4b583d8c5fc8b534a3ac8 upstream.
The existing cleanup routine implementation is not well synchronized with the syscall routine. When a device is detaching, below race could occur.
static int ax25_sendmsg(...) {
...
lock_sock()
ax25 = sk_to_ax25(sk);
if (ax25->ax25_dev == NULL) // CHECK
...
ax25_queue_xmit(skb, ax25->ax25_dev->dev); // USE
...
}
static void ax25_kill_by_device(...) {
...
if (s->ax25_dev == ax25_dev) {
s->ax25_dev = NULL;
...
}Other syscall functions like ax25_getsockopt, ax25_getname, ax25_info_show also suffer from similar races. To fix them, this patch introduce lock_sock() into ax25_kill_by_device in order to guarantee that the nullify action in cleanup routine cannot proceed when another socket request is pending.
--- net/ax25/af_ax25.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
net/ax25/af_ax25.c +3 -1
@@ -88,8 +88,10 @@ static void ax25_kill_by_device(struct n 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);
Greg Kroah-Hartman
maintainerPATCH 15/17 hamradio: defer ax25 kfree after unregister_netdev
In reply to Greg Kroah-HartmanFrom: Lin Ma <[email protected]>
commit 3e0588c291d6ce225f2b891753ca41d45ba42469 upstream.
There is a possible race condition (use-after-free) like below
(USE) | (FREE)
ax25_sendmsg |
ax25_queue_xmit |
dev_queue_xmit |
__dev_queue_xmit |
__dev_xmit_skb |
sch_direct_xmit | ...
xmit_one |
netdev_start_xmit | tty_ldisc_kill
__netdev_start_xmit | mkiss_close
ax_xmit | kfree
ax_encaps |
|Even though there are two synchronization primitives before the kfree:
1. wait_for_completion(&ax->dead). This can prevent the race with routines from mkiss_ioctl. However, it cannot stop the routine coming from upper layer, i.e., the ax25_sendmsg.
2. netif_stop_queue(ax->dev). It seems that this line of code aims to halt the transmit queue but it fails to stop the routine that already being xmit.
This patch reorder the kfree after the unregister_netdev to avoid the possible UAF as the unregister_netdev() is well synchronized and won't return if there is a running routine.
--- drivers/net/hamradio/mkiss.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-)
drivers/net/hamradio/mkiss.c +5 -4
@@ -803,13 +803,14 @@ static void mkiss_close(struct tty_struc*/ netif_stop_queue (ax->dev); -/* Free all AX25 frame buffers. */ -kfree (ax->rbuff); -kfree (ax->xbuff); - ax->tty =NULL ;unregister_netdev (ax->dev); + +/* Free all AX25 frame buffers after unreg. */ +kfree (ax->rbuff); +kfree (ax->xbuff); +free_netdev (ax->dev); }
Greg Kroah-Hartman
maintainerPATCH 16/17 hamradio: improve the incomplete fix to avoid NPD
In reply to Greg Kroah-HartmanFrom: Lin Ma <[email protected]>
commit b2f37aead1b82a770c48b5d583f35ec22aabb61e upstream.
The previous commit 3e0588c291d6 ("hamradio: defer ax25 kfree after unregister_netdev") reorder the kfree operations and unregister_netdev operation to prevent UAF.
This commit improves the previous one by also deferring the nullify of the ax->tty pointer. Otherwise, a NULL pointer dereference bug occurs. Partial of the stack trace is shown below.
BUG: kernel NULL pointer dereference, address: 0000000000000538 RIP: 0010:ax_xmit+0x1f9/0x400 ... Call Trace: dev_hard_start_xmit+0xec/0x320 sch_direct_xmit+0xea/0x240 __qdisc_run+0x166/0x5c0 __dev_queue_xmit+0x2c7/0xaf0 ax25_std_establish_data_link+0x59/0x60 ax25_connect+0x3a0/0x500 ? security_socket_connect+0x2b/0x40 __sys_connect+0x96/0xc0 ? __hrtimer_init+0xc0/0xc0 ? common_nsleep+0x2e/0x50 ? switch_fpu_return+0x139/0x1a0 __x64_sys_connect+0x11/0x20 do_syscall_64+0x33/0x40 entry_SYSCALL_64_after_hwframe+0x44/0xa9
The crash point is shown as below
static void ax_encaps(...) {
...
set_bit(TTY_DO_WRITE_WAKEUP, &ax->tty->flags); // ax->tty = NULL!
...
}
By placing the nullify action after the unregister_netdev, the ax->tty pointer won't be assigned as NULL net_device framework layer is well synchronized.
--- drivers/net/hamradio/mkiss.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/net/hamradio/mkiss.c +2 -2
@@ -803,14 +803,14 @@ static void mkiss_close(struct tty_struc*/ netif_stop_queue (ax->dev); - ax->tty =NULL ; -unregister_netdev (ax->dev);/* Free all AX25 frame buffers after unreg. */ kfree (ax->rbuff);kfree (ax->xbuff); + ax->tty =NULL ; +free_netdev (ax->dev); }
Greg Kroah-Hartman
maintainerPATCH 17/17 phonet/pep: refuse to enable an unbound pipe
In reply to Greg Kroah-HartmanFrom: Rémi Denis-Courmont <[email protected]>
commit 75a2f31520095600f650597c0ac41f48b5ba0068 upstream.
This ioctl() implicitly assumed that the socket was already bound to a valid local socket name, i.e. Phonet object. If the socket was not bound, two separate problems would occur:
1) We'd send an pipe enablement request with an invalid source object.
2) Later socket calls could BUG on the socket unexpectedly being connected yet not bound to a valid object.
--- net/phonet/pep.c | 2 ++ 1 file changed, 2 insertions(+)
net/phonet/pep.c +2 -0
@@ -956,6 +956,8 @@ static int pep_ioctl(struct sock *sk, in 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);
Hi!
Quoted 4 lines
This is the start of the stable review cycle for the 4.4.297 release. There are 17 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
CIP testing did not find any problems here:
https://gitlab.com/cip-project/cip-testing/linux-stable-rc-ci/-/tree/linux-4.4.y
Best regards,
Pavel
Signature · 2 lines
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Quoted 8 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 4.4.297 release. There are 17 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
Responses should be made by Wed, 29 Dec 2021 15:13:09 +0000. Anything received after that time might be too late.
Build results:
total: 160 pass: 160 fail: 0 Qemu test results: total: 339 pass: 339 fail: 0
Guenter
Quoted 10 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 4.4.297 release. There are 17 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
Responses should be made by Wed, 29 Dec 2021 15:13:09 +0000. Anything received after that time might be too late.
The whole patch series can be found in one patch at:
Quoted 8 lines
https://www.kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.4.297-rc1.gzor in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.gitlinux-4.4.y
and the diffstat can be found below.thanks,
greg k-h
Results from Linaro’s test farm.
No regressions on arm64, arm, x86_64, and i386.
## Build
* kernel: 4.4.297-rc1
* git: https://gitlab.com/Linaro/lkft/mirrors/stable/linux-stable-rc
* git branch: linux-4.4.y
* git commit: ea28db322a98fc90032bea9e517d2beec25bf5b6
* git describe: v4.4.296-18-gea28db322a98
* test details:
https://qa-reports.linaro.org/lkft/linux-stable-rc-linux-4.4.y/build/v4.4.296-18-gea28db322a98
## No Test Regressions (compared to v4.4.296)
## No Test Fixes (compared to v4.4.296)
## Test result summary
total: 46781, pass: 37737, fail: 196, skip: 7823, xfail: 1025
## Build Summary
* arm: 129 total, 129 passed, 0 failed
* arm64: 31 total, 31 passed, 0 failed
* i386: 18 total, 18 passed, 0 failed
* juno-r2: 1 total, 1 passed, 0 failed
* mips: 22 total, 22 passed, 0 failed
* sparc: 12 total, 12 passed, 0 failed
* x15: 1 total, 1 passed, 0 failed
* x86: 1 total, 1 passed, 0 failed
* x86_64: 30 total, 24 passed, 6 failed
## Test suites summary
* fwts
* kselftest-android
* kselftest-bpf
* kselftest-capabilities
* kselftest-cgroup
* kselftest-clone3
* kselftest-core
* kselftest-cpu-hotplug
* kselftest-cpufreq
* kselftest-efivarfs
* kselftest-filesystems
* kselftest-firmware
* kselftest-fpu
* kselftest-futex
* kselftest-gpio
* kselftest-intel_pstate
* kselftest-ipc
* kselftest-ir
* kselftest-kcmp
* kselftest-kexec
* kselftest-kvm
* kselftest-lib
* kselftest-livepatch
* kselftest-membarrier
* kselftest-ptrace
* kselftest-rseq
* kselftest-rtc
* kselftest-seccomp
* kselftest-sigaltstack
* kselftest-size
* kselftest-splice
* kselftest-static_keys
* kselftest-sync
* kselftest-sysctl
* kselftest-timens
* kselftest-timers
* kselftest-tmpfs
* kselftest-tpm2
* kselftest-user
* kselftest-vm
* kselftest-x86
* kselftest-zram
* kvm-unit-tests
* libhugetlbfs
* linux-log-parser
* ltp-cap_bounds-tests
* ltp-commands-tests
* ltp-containers-tests
* ltp-controllers-tests
* ltp-cpuhotplug-tests
* ltp-crypto-tests
* ltp-cve-tests
* ltp-dio-tests
* ltp-fcntl-locktests-tests
* ltp-filecaps-tests
* ltp-fs-tests
* ltp-fs_bind-tests
* ltp-fs_perms_simple-tests
* ltp-fsx-tests
* ltp-hugetlb-tests
* ltp-io-tests
* ltp-ipc-tests
* ltp-math-tests
* ltp-mm-tests
* ltp-nptl-tests
* ltp-open-posix-tests
* ltp-pty-tests
* ltp-sched-tests
* ltp-securebits-tests
* ltp-syscalls-tests
* ltp-tracing-tests
* network-basic-tests
* packetdrill
* perf
* ssuite
* v4l2-compliance
--
Linaro LKFT
https://lkft.linaro.org
Quoted 9 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 4.4.297 release. There are 17 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
Responses should be made by Wed, 29 Dec 2021 15:13:09 +0000. Anything received after that time might be too late.
The whole patch series can be found in one patch at:
Quoted 9 lines
https://www.kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.4.297-rc1.gzor in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.gitlinux-4.4.y
and the diffstat can be found below.thanks,
greg k-h
Compiled and booted on my test system. No dmesg regressions.
thanks,
-- Shuah
4.4 series end of line was Re: [PATCH 4.4 00/17] 4.4.297-rc1 review
In reply to Greg Kroah-HartmanHi!
Quoted 4 lines
This is the start of the stable review cycle for the 4.4.297 release. There are 17 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
4.4.X series is scheduled for EOL next month. Do you have any estimates if it will be more like Feb 2 or Feb 27?
CIP project is commited to maintaining 4.4.X after the EOL, and we need to figure out what to do next. Is there anyone else interested in maintaining 4.4.X after the February?
Best regards,
Pavel
Signature · 2 lines
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Greg Kroah-Hartman
maintainerRe: 4.4 series end of line was Re: [PATCH 4.4 00/17] 4.4.297-rc1 review
Quoted 9 lines · Pavel Machek
Hi!
Quoted 4 lines
This is the start of the stable review cycle for the 4.4.297 release. There are 17 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
4.4.X series is scheduled for EOL next month. Do you have any estimates if it will be more like Feb 2 or Feb 27?
I would bet on Feb 1 :)
good luck!
greg k-h
Re: 4.4 series end of line was Re: [PATCH 4.4 00/17] 4.4.297-rc1 review
Hi!
Quoted 9 lines
Quoted 7 lines
Quoted 4 lines
This is the start of the stable review cycle for the 4.4.297 release. There are 17 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
4.4.X series is scheduled for EOL next month. Do you have any estimates if it will be more like Feb 2 or Feb 27?
I would bet on Feb 1 :)
Hmm. That does not leave us too much time.
FAQ states:
# Why are some longterm versions supported longer than others? The # "projected EOL" dates are not set in stone. Each new longterm kernel
# usually starts with only a 2-year projected EOL that can be extended # further if there is enough interest from the industry at large to # help support it for a longer period of time.
Is there anyone else interested in continued 4.4.X maintainence?
CIP project will need to maintain 4.4.X-cip and 4.4.X-cip-rt for some more years. Do you think it would make sense to maintain 4.4.X-stable as well? What would be requirements for doing so?
Best regards,
Pavel
Signature · 2 lines
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Greg Kroah-Hartman
maintainerRe: 4.4 series end of line was Re: [PATCH 4.4 00/17] 4.4.297-rc1 review
Quoted 16 lines · Pavel Machek
Hi!
Quoted 9 lines
Quoted 7 lines
Quoted 4 lines
This is the start of the stable review cycle for the 4.4.297 release. There are 17 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
4.4.X series is scheduled for EOL next month. Do you have any estimates if it will be more like Feb 2 or Feb 27?
I would bet on Feb 1 :)
Hmm. That does not leave us too much time.
FAQ states:
Quoted 7 lines
# Why are some longterm versions supported longer than others? The # "projected EOL" dates are not set in stone. Each new longterm kernel
# usually starts with only a 2-year projected EOL that can be extended # further if there is enough interest from the industry at large to # help support it for a longer period of time.Is there anyone else interested in continued 4.4.X maintainence?
I do not know of any companies or interested parties that is interested in this. The ones that rely on 4.4.x right now are going to be dropping support for it this month, if they haven't already from what I know.
So I have no resources to maintain this anymore, sorry, and I STRONGLY recommend that everyone else just move off of it as well.
Quoted 2 lines
CIP project will need to maintain 4.4.X-cip and 4.4.X-cip-rt for some more years.
That is up to them to do, I wish them well, I think it is a loosing game and one that is going to cost more money than they realize. Remember, it costs more money and time the older the kernel is to keep it "alive". It is cheaper and easier to use more modern kernels.
Quoted 1 line
Do you think it would make sense to maintain 4.4.X-stable as well?
Not at all. It is barely alive as-is. If you _HAVE_ to maintain it, I recommend only doing it on a very narrow way (i.e. limited functionality and hardware support). That's the only possible way you will be able to do this.
good luck!
greg k-h