From: Greg Kroah-Hartman Date: Sat, 8 Jul 2017 08:43:19 +0000 (+0200) Subject: 4.4-stable patches X-Git-Tag: v4.9.37~20 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=345d8a5ff3d57230c7cb6b7c9d02a68f1b95196f;p=thirdparty%2Fkernel%2Fstable-queue.git 4.4-stable patches added patches: gfs2-fix-glock-rhashtable-rcu-bug.patch usb-serial-option-add-two-longcheer-device-ids.patch usb-serial-qcserial-new-sierra-wireless-em7305-device-id.patch --- diff --git a/queue-4.4/gfs2-fix-glock-rhashtable-rcu-bug.patch b/queue-4.4/gfs2-fix-glock-rhashtable-rcu-bug.patch new file mode 100644 index 00000000000..7db93d3a88d --- /dev/null +++ b/queue-4.4/gfs2-fix-glock-rhashtable-rcu-bug.patch @@ -0,0 +1,62 @@ +From 961ae1d83d055a4b9ebbfb4cc8ca62ec1a7a3b74 Mon Sep 17 00:00:00 2001 +From: Andreas Gruenbacher +Date: Fri, 7 Jul 2017 13:22:05 -0500 +Subject: gfs2: Fix glock rhashtable rcu bug + +From: Andreas Gruenbacher + +commit 961ae1d83d055a4b9ebbfb4cc8ca62ec1a7a3b74 upstream. + +Before commit 88ffbf3e03 "GFS2: Use resizable hash table for glocks", +glocks were freed via call_rcu to allow reading the glock hashtable +locklessly using rcu. This was then changed to free glocks immediately, +which made reading the glock hashtable unsafe. Bring back the original +code for freeing glocks via call_rcu. + +Signed-off-by: Andreas Gruenbacher +Signed-off-by: Bob Peterson +Signed-off-by: Greg Kroah-Hartman + +--- + fs/gfs2/glock.c | 11 +++++++++-- + fs/gfs2/incore.h | 1 + + 2 files changed, 10 insertions(+), 2 deletions(-) + +--- a/fs/gfs2/glock.c ++++ b/fs/gfs2/glock.c +@@ -80,9 +80,9 @@ static struct rhashtable_params ht_parms + + static struct rhashtable gl_hash_table; + +-void gfs2_glock_free(struct gfs2_glock *gl) ++static void gfs2_glock_dealloc(struct rcu_head *rcu) + { +- struct gfs2_sbd *sdp = gl->gl_name.ln_sbd; ++ struct gfs2_glock *gl = container_of(rcu, struct gfs2_glock, gl_rcu); + + if (gl->gl_ops->go_flags & GLOF_ASPACE) { + kmem_cache_free(gfs2_glock_aspace_cachep, gl); +@@ -90,6 +90,13 @@ void gfs2_glock_free(struct gfs2_glock * + kfree(gl->gl_lksb.sb_lvbptr); + kmem_cache_free(gfs2_glock_cachep, gl); + } ++} ++ ++void gfs2_glock_free(struct gfs2_glock *gl) ++{ ++ struct gfs2_sbd *sdp = gl->gl_name.ln_sbd; ++ ++ call_rcu(&gl->gl_rcu, gfs2_glock_dealloc); + if (atomic_dec_and_test(&sdp->sd_glock_disposal)) + wake_up(&sdp->sd_glock_wait); + } +--- a/fs/gfs2/incore.h ++++ b/fs/gfs2/incore.h +@@ -367,6 +367,7 @@ struct gfs2_glock { + loff_t end; + } gl_vm; + }; ++ struct rcu_head gl_rcu; + struct rhash_head gl_node; + }; + diff --git a/queue-4.4/series b/queue-4.4/series index 9b3ce1978f0..8a4332e9ca3 100644 --- a/queue-4.4/series +++ b/queue-4.4/series @@ -19,3 +19,6 @@ pinctrl-meson-meson8b-fix-the-nand-dqs-pins.patch pinctrl-sunxi-fix-spdif-function-name-for-a83t.patch pinctrl-mxs-atomically-switch-mux-and-drive-strength-config.patch pinctrl-sh-pfc-update-info-pointer-after-soc-specific-init.patch +usb-serial-option-add-two-longcheer-device-ids.patch +usb-serial-qcserial-new-sierra-wireless-em7305-device-id.patch +gfs2-fix-glock-rhashtable-rcu-bug.patch diff --git a/queue-4.4/usb-serial-option-add-two-longcheer-device-ids.patch b/queue-4.4/usb-serial-option-add-two-longcheer-device-ids.patch new file mode 100644 index 00000000000..99c8509a51b --- /dev/null +++ b/queue-4.4/usb-serial-option-add-two-longcheer-device-ids.patch @@ -0,0 +1,39 @@ +From 8fb060da715ad10fe956d7c0077b2fb0c12bb9d7 Mon Sep 17 00:00:00 2001 +From: Johan Hovold +Date: Mon, 12 Jun 2017 16:30:16 +0200 +Subject: USB: serial: option: add two Longcheer device ids +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +From: Johan Hovold + +commit 8fb060da715ad10fe956d7c0077b2fb0c12bb9d7 upstream. + +Add two Longcheer device-id entries which specifically enables a +Telewell TW-3G HSPA+ branded modem (0x9801). + +Reported-by: Teemu Likonen +Reported-by: Bjørn Mork +Reported-by: Lars Melin +Tested-by: Teemu Likonen +Signed-off-by: Johan Hovold +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/serial/option.c | 4 ++++ + 1 file changed, 4 insertions(+) + +--- a/drivers/usb/serial/option.c ++++ b/drivers/usb/serial/option.c +@@ -1877,6 +1877,10 @@ static const struct usb_device_id option + .driver_info = (kernel_ulong_t)&four_g_w100_blacklist + }, + { USB_DEVICE_INTERFACE_CLASS(LONGCHEER_VENDOR_ID, SPEEDUP_PRODUCT_SU9800, 0xff) }, ++ { USB_DEVICE_INTERFACE_CLASS(LONGCHEER_VENDOR_ID, 0x9801, 0xff), ++ .driver_info = (kernel_ulong_t)&net_intf3_blacklist }, ++ { USB_DEVICE_INTERFACE_CLASS(LONGCHEER_VENDOR_ID, 0x9803, 0xff), ++ .driver_info = (kernel_ulong_t)&net_intf4_blacklist }, + { USB_DEVICE(LONGCHEER_VENDOR_ID, ZOOM_PRODUCT_4597) }, + { USB_DEVICE(LONGCHEER_VENDOR_ID, IBALL_3_5G_CONNECT) }, + { USB_DEVICE(HAIER_VENDOR_ID, HAIER_PRODUCT_CE100) }, diff --git a/queue-4.4/usb-serial-qcserial-new-sierra-wireless-em7305-device-id.patch b/queue-4.4/usb-serial-qcserial-new-sierra-wireless-em7305-device-id.patch new file mode 100644 index 00000000000..3aa50e62320 --- /dev/null +++ b/queue-4.4/usb-serial-qcserial-new-sierra-wireless-em7305-device-id.patch @@ -0,0 +1,33 @@ +From 996fab55d864ed604158f71724ff52db1c2454a3 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Bj=C3=B8rn=20Mork?= +Date: Tue, 13 Jun 2017 19:11:42 +0200 +Subject: USB: serial: qcserial: new Sierra Wireless EM7305 device ID +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +From: Bjørn Mork + +commit 996fab55d864ed604158f71724ff52db1c2454a3 upstream. + +A new Sierra Wireless EM7305 device ID used in a Toshiba laptop. + +Reported-by: Petr Kloc +Signed-off-by: Bjørn Mork +Signed-off-by: Johan Hovold +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/serial/qcserial.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/drivers/usb/serial/qcserial.c ++++ b/drivers/usb/serial/qcserial.c +@@ -158,6 +158,7 @@ static const struct usb_device_id id_tab + {DEVICE_SWI(0x1199, 0x9056)}, /* Sierra Wireless Modem */ + {DEVICE_SWI(0x1199, 0x9060)}, /* Sierra Wireless Modem */ + {DEVICE_SWI(0x1199, 0x9061)}, /* Sierra Wireless Modem */ ++ {DEVICE_SWI(0x1199, 0x9063)}, /* Sierra Wireless EM7305 */ + {DEVICE_SWI(0x1199, 0x9070)}, /* Sierra Wireless MC74xx */ + {DEVICE_SWI(0x1199, 0x9071)}, /* Sierra Wireless MC74xx */ + {DEVICE_SWI(0x1199, 0x9078)}, /* Sierra Wireless EM74xx */