]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
3.4-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 4 Mar 2014 17:50:47 +0000 (09:50 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 4 Mar 2014 17:50:47 +0000 (09:50 -0800)
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

queue-3.4/hwmon-max1668-fix-writing-the-minimum-temperature.patch [new file with mode: 0644]
queue-3.4/series
queue-3.4/usb-ftdi_sio-add-cressi-leonardo-pid.patch [new file with mode: 0644]
queue-3.4/usb-serial-option-blacklist-interface-4-for-cinterion-phs8-and-pxs8.patch [new file with mode: 0644]
queue-3.4/workqueue-ensure-task-is-valid-across-kthread_stop.patch [new file with mode: 0644]

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 (file)
index 0000000..8fcb971
--- /dev/null
@@ -0,0 +1,31 @@
+From 500a91571f0a5d0d3242d83802ea2fd1faccc66e Mon Sep 17 00:00:00 2001
+From: Guenter Roeck <linux@roeck-us.net>
+Date: Sat, 15 Feb 2014 17:54:06 -0800
+Subject: hwmon: (max1668) Fix writing the minimum temperature
+
+From: Guenter Roeck <linux@roeck-us.net>
+
+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 <linux@roeck-us.net>
+Reviewed-by: Jean Delvare <jdelvare@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ 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);
index e0602c747bafdce1c292b0a998951a3901516158..996204d87a7e22fbb163c45a563771ab358c3622 100644 (file)
@@ -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 (file)
index 0000000..098c8b9
--- /dev/null
@@ -0,0 +1,47 @@
+From 6dbd46c849e071e6afc1e0cad489b0175bca9318 Mon Sep 17 00:00:00 2001
+From: Joerg Dorchain <joerg@dorchain.net>
+Date: Fri, 21 Feb 2014 20:29:33 +0100
+Subject: USB: ftdi_sio: add Cressi Leonardo PID
+
+From: Joerg Dorchain <joerg@dorchain.net>
+
+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 <joerg@dorchain.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ 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 (file)
index 0000000..cfa1555
--- /dev/null
@@ -0,0 +1,34 @@
+From 12df84d4a80278a5b1abfec3206795291da52fc9 Mon Sep 17 00:00:00 2001
+From: Aleksander Morgado <aleksander@aleksander.es>
+Date: Wed, 12 Feb 2014 16:04:45 +0100
+Subject: USB: serial: option: blacklist interface 4 for Cinterion PHS8 and PXS8
+
+From: Aleksander Morgado <aleksander@aleksander.es>
+
+commit 12df84d4a80278a5b1abfec3206795291da52fc9 upstream.
+
+This interface is to be handled by the qmi_wwan driver.
+
+CC: Hans-Christoph Schemmel <hans-christoph.schemmel@gemalto.com>
+CC: Christian Schmiedl <christian.schmiedl@gemalto.com>
+CC: Nicolaus Colberg <nicolaus.colberg@gemalto.com>
+CC: David McCullough <david.mccullough@accelecon.com>
+Signed-off-by: Aleksander Morgado <aleksander@aleksander.es>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ 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 (file)
index 0000000..881f347
--- /dev/null
@@ -0,0 +1,55 @@
+From 5bdfff96c69a4d5ab9c49e60abf9e070ecd2acbb Mon Sep 17 00:00:00 2001
+From: Lai Jiangshan <laijs@cn.fujitsu.com>
+Date: Sat, 15 Feb 2014 22:02:28 +0800
+Subject: workqueue: ensure @task is valid across kthread_stop()
+
+From: Lai Jiangshan <laijs@cn.fujitsu.com>
+
+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 <laijs@cn.fujitsu.com>
+Signed-off-by: Tejun Heo <tj@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ 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);