From: Greg Kroah-Hartman Date: Tue, 4 Mar 2014 17:50:47 +0000 (-0800) Subject: 3.4-stable patches X-Git-Tag: v3.10.33~22 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=9e5f8f3724642340203c4b749917299565daa504;p=thirdparty%2Fkernel%2Fstable-queue.git 3.4-stable patches added patches: hwmon-max1668-fix-writing-the-minimum-temperature.patch usb-ftdi_sio-add-cressi-leonardo-pid.patch usb-serial-option-blacklist-interface-4-for-cinterion-phs8-and-pxs8.patch workqueue-ensure-task-is-valid-across-kthread_stop.patch --- diff --git a/queue-3.4/hwmon-max1668-fix-writing-the-minimum-temperature.patch b/queue-3.4/hwmon-max1668-fix-writing-the-minimum-temperature.patch new file mode 100644 index 00000000000..8fcb9719f49 --- /dev/null +++ b/queue-3.4/hwmon-max1668-fix-writing-the-minimum-temperature.patch @@ -0,0 +1,31 @@ +From 500a91571f0a5d0d3242d83802ea2fd1faccc66e Mon Sep 17 00:00:00 2001 +From: Guenter Roeck +Date: Sat, 15 Feb 2014 17:54:06 -0800 +Subject: hwmon: (max1668) Fix writing the minimum temperature + +From: Guenter Roeck + +commit 500a91571f0a5d0d3242d83802ea2fd1faccc66e upstream. + +When trying to set the minimum temperature, the driver was erroneously +writing the maximum temperature into the chip. + +Signed-off-by: Guenter Roeck +Reviewed-by: Jean Delvare +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/hwmon/max1668.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/hwmon/max1668.c ++++ b/drivers/hwmon/max1668.c +@@ -243,7 +243,7 @@ static ssize_t set_temp_min(struct devic + data->temp_min[index] = SENSORS_LIMIT(temp/1000, -128, 127); + if (i2c_smbus_write_byte_data(client, + MAX1668_REG_LIML_WR(index), +- data->temp_max[index])) ++ data->temp_min[index])) + count = -EIO; + mutex_unlock(&data->update_lock); + diff --git a/queue-3.4/series b/queue-3.4/series index e0602c747ba..996204d87a7 100644 --- a/queue-3.4/series +++ b/queue-3.4/series @@ -31,3 +31,7 @@ pci-enable-intx-if-bios-left-them-disabled.patch i7core_edac-fix-pci-device-reference-count.patch acpi-video-filter-the-_bcl-table-for-duplicate-brightness-values.patch acpi-processor-rework-processor-throttling-with-work_on_cpu.patch +usb-serial-option-blacklist-interface-4-for-cinterion-phs8-and-pxs8.patch +usb-ftdi_sio-add-cressi-leonardo-pid.patch +hwmon-max1668-fix-writing-the-minimum-temperature.patch +workqueue-ensure-task-is-valid-across-kthread_stop.patch diff --git a/queue-3.4/usb-ftdi_sio-add-cressi-leonardo-pid.patch b/queue-3.4/usb-ftdi_sio-add-cressi-leonardo-pid.patch new file mode 100644 index 00000000000..098c8b901b7 --- /dev/null +++ b/queue-3.4/usb-ftdi_sio-add-cressi-leonardo-pid.patch @@ -0,0 +1,47 @@ +From 6dbd46c849e071e6afc1e0cad489b0175bca9318 Mon Sep 17 00:00:00 2001 +From: Joerg Dorchain +Date: Fri, 21 Feb 2014 20:29:33 +0100 +Subject: USB: ftdi_sio: add Cressi Leonardo PID + +From: Joerg Dorchain + +commit 6dbd46c849e071e6afc1e0cad489b0175bca9318 upstream. + +Hello, + +the following patch adds an entry for the PID of a Cressi Leonardo +diving computer interface to kernel 3.13.0. +It is detected as FT232RL. +Works with subsurface. + +Signed-off-by: Joerg Dorchain +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/serial/ftdi_sio.c | 2 ++ + drivers/usb/serial/ftdi_sio_ids.h | 6 ++++++ + 2 files changed, 8 insertions(+) + +--- a/drivers/usb/serial/ftdi_sio.c ++++ b/drivers/usb/serial/ftdi_sio.c +@@ -920,6 +920,8 @@ static struct usb_device_id id_table_com + /* Crucible Devices */ + { USB_DEVICE(FTDI_VID, FTDI_CT_COMET_PID) }, + { USB_DEVICE(FTDI_VID, FTDI_Z3X_PID) }, ++ /* Cressi Devices */ ++ { USB_DEVICE(FTDI_VID, FTDI_CRESSI_PID) }, + { }, /* Optional parameter entry */ + { } /* Terminating entry */ + }; +--- a/drivers/usb/serial/ftdi_sio_ids.h ++++ b/drivers/usb/serial/ftdi_sio_ids.h +@@ -1320,3 +1320,9 @@ + * Manufacturer: Smart GSM Team + */ + #define FTDI_Z3X_PID 0x0011 ++ ++/* ++ * Product: Cressi PC Interface ++ * Manufacturer: Cressi ++ */ ++#define FTDI_CRESSI_PID 0x87d0 diff --git a/queue-3.4/usb-serial-option-blacklist-interface-4-for-cinterion-phs8-and-pxs8.patch b/queue-3.4/usb-serial-option-blacklist-interface-4-for-cinterion-phs8-and-pxs8.patch new file mode 100644 index 00000000000..cfa15554a1f --- /dev/null +++ b/queue-3.4/usb-serial-option-blacklist-interface-4-for-cinterion-phs8-and-pxs8.patch @@ -0,0 +1,34 @@ +From 12df84d4a80278a5b1abfec3206795291da52fc9 Mon Sep 17 00:00:00 2001 +From: Aleksander Morgado +Date: Wed, 12 Feb 2014 16:04:45 +0100 +Subject: USB: serial: option: blacklist interface 4 for Cinterion PHS8 and PXS8 + +From: Aleksander Morgado + +commit 12df84d4a80278a5b1abfec3206795291da52fc9 upstream. + +This interface is to be handled by the qmi_wwan driver. + +CC: Hans-Christoph Schemmel +CC: Christian Schmiedl +CC: Nicolaus Colberg +CC: David McCullough +Signed-off-by: Aleksander Morgado +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/serial/option.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +--- a/drivers/usb/serial/option.c ++++ b/drivers/usb/serial/option.c +@@ -1546,7 +1546,8 @@ static const struct usb_device_id option + /* Cinterion */ + { USB_DEVICE(CINTERION_VENDOR_ID, CINTERION_PRODUCT_EU3_E) }, + { USB_DEVICE(CINTERION_VENDOR_ID, CINTERION_PRODUCT_EU3_P) }, +- { USB_DEVICE(CINTERION_VENDOR_ID, CINTERION_PRODUCT_PH8) }, ++ { USB_DEVICE(CINTERION_VENDOR_ID, CINTERION_PRODUCT_PH8), ++ .driver_info = (kernel_ulong_t)&net_intf4_blacklist }, + { USB_DEVICE(CINTERION_VENDOR_ID, CINTERION_PRODUCT_AHXX) }, + { USB_DEVICE(CINTERION_VENDOR_ID, CINTERION_PRODUCT_PLXX), + .driver_info = (kernel_ulong_t)&net_intf4_blacklist }, diff --git a/queue-3.4/workqueue-ensure-task-is-valid-across-kthread_stop.patch b/queue-3.4/workqueue-ensure-task-is-valid-across-kthread_stop.patch new file mode 100644 index 00000000000..881f3477165 --- /dev/null +++ b/queue-3.4/workqueue-ensure-task-is-valid-across-kthread_stop.patch @@ -0,0 +1,55 @@ +From 5bdfff96c69a4d5ab9c49e60abf9e070ecd2acbb Mon Sep 17 00:00:00 2001 +From: Lai Jiangshan +Date: Sat, 15 Feb 2014 22:02:28 +0800 +Subject: workqueue: ensure @task is valid across kthread_stop() + +From: Lai Jiangshan + +commit 5bdfff96c69a4d5ab9c49e60abf9e070ecd2acbb upstream. + +When a kworker should die, the kworkre is notified through WORKER_DIE +flag instead of kthread_should_stop(). This, IIRC, is primarily to +keep the test synchronized inside worker_pool lock. WORKER_DIE is +first set while holding pool->lock, the lock is dropped and +kthread_stop() is called. + +Unfortunately, this means that there's a slight chance that the target +kworker may see WORKER_DIE before kthread_stop() finishes and exits +and frees the target task before or during kthread_stop(). + +Fix it by pinning the target task before setting WORKER_DIE and +putting it after kthread_stop() is done. + +tj: Improved patch description and comment. Moved pinning above + WORKER_DIE for better signify what it's protecting. + +Signed-off-by: Lai Jiangshan +Signed-off-by: Tejun Heo +Signed-off-by: Greg Kroah-Hartman + +--- + kernel/workqueue.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +--- a/kernel/workqueue.c ++++ b/kernel/workqueue.c +@@ -1469,12 +1469,19 @@ static void destroy_worker(struct worker + if (worker->flags & WORKER_IDLE) + gcwq->nr_idle--; + ++ /* ++ * Once WORKER_DIE is set, the kworker may destroy itself at any ++ * point. Pin to ensure the task stays until we're done with it. ++ */ ++ get_task_struct(worker->task); ++ + list_del_init(&worker->entry); + worker->flags |= WORKER_DIE; + + spin_unlock_irq(&gcwq->lock); + + kthread_stop(worker->task); ++ put_task_struct(worker->task); + kfree(worker); + + spin_lock_irq(&gcwq->lock);