]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
3.3-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 26 Mar 2012 21:55:47 +0000 (14:55 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 26 Mar 2012 21:55:47 +0000 (14:55 -0700)
added patches:
as102-add-__packed-attribute-to-structs-defined-inside-packed-structs.patch
au8522-bug-fix-enable-modulation-after-tune-instead-of-before-tuning.patch
hwmon-fam15h_power-correct-sign-extension-of-running_avg_capture.patch
iommu-amd-fix-section-warning-for-prealloc_protection_domains.patch
iommu-amd-make-sure-iommu-interrupts-are-re-enabled-on-resume.patch
lgdt330x-fix-signedness-error-in-i2c_read_demod_bytes.patch
mxl111sf-fix-error-on-stream-stop-in-mxl111sf_ep6_streaming_ctrl.patch
proc-ns-use-d_set_d_op-api-to-set-dentry-ops-in-proc_ns_instantiate.patch
pvrusb2-fix-7mhz-8mhz-dvb-t-tuner-support-for-hvr1900-rev-d1f5.patch
sysctl-protect-poll-in-entries-that-may-go-away.patch
tda10071-fix-the-delivery-system.patch
x86-32-fix-endless-loop-when-processing-signals-for-kernel-tasks.patch
x86-32-fix-typo-for-mq_getsetattr-in-syscall-table.patch

14 files changed:
queue-3.3/as102-add-__packed-attribute-to-structs-defined-inside-packed-structs.patch [new file with mode: 0644]
queue-3.3/au8522-bug-fix-enable-modulation-after-tune-instead-of-before-tuning.patch [new file with mode: 0644]
queue-3.3/hwmon-fam15h_power-correct-sign-extension-of-running_avg_capture.patch [new file with mode: 0644]
queue-3.3/iommu-amd-fix-section-warning-for-prealloc_protection_domains.patch [new file with mode: 0644]
queue-3.3/iommu-amd-make-sure-iommu-interrupts-are-re-enabled-on-resume.patch [new file with mode: 0644]
queue-3.3/lgdt330x-fix-signedness-error-in-i2c_read_demod_bytes.patch [new file with mode: 0644]
queue-3.3/mxl111sf-fix-error-on-stream-stop-in-mxl111sf_ep6_streaming_ctrl.patch [new file with mode: 0644]
queue-3.3/proc-ns-use-d_set_d_op-api-to-set-dentry-ops-in-proc_ns_instantiate.patch [new file with mode: 0644]
queue-3.3/pvrusb2-fix-7mhz-8mhz-dvb-t-tuner-support-for-hvr1900-rev-d1f5.patch [new file with mode: 0644]
queue-3.3/series
queue-3.3/sysctl-protect-poll-in-entries-that-may-go-away.patch [new file with mode: 0644]
queue-3.3/tda10071-fix-the-delivery-system.patch [new file with mode: 0644]
queue-3.3/x86-32-fix-endless-loop-when-processing-signals-for-kernel-tasks.patch [new file with mode: 0644]
queue-3.3/x86-32-fix-typo-for-mq_getsetattr-in-syscall-table.patch [new file with mode: 0644]

diff --git a/queue-3.3/as102-add-__packed-attribute-to-structs-defined-inside-packed-structs.patch b/queue-3.3/as102-add-__packed-attribute-to-structs-defined-inside-packed-structs.patch
new file mode 100644 (file)
index 0000000..9934514
--- /dev/null
@@ -0,0 +1,402 @@
+From abf9d005375d6c6160cc9c17e5dcac32e412c8dc Mon Sep 17 00:00:00 2001
+From: Gianluca Gennari <gennarone@gmail.com>
+Date: Tue, 6 Mar 2012 09:47:45 -0300
+Subject: [media] as102: add __packed attribute to structs defined inside packed structs
+
+From: Gianluca Gennari <gennarone@gmail.com>
+
+commit abf9d005375d6c6160cc9c17e5dcac32e412c8dc upstream.
+
+This patch fixes a regression in kernel 3.3 due to this patch:
+
+http://patchwork.linuxtv.org/patch/8332/
+
+That patch changes "#pragma pack(1)" with "__packed" attributes, but it is not
+complete. In fact, in the as102 driver there are a lot of structs/unions
+defined inside other structs/unions.
+When the "__packed" attribute is applied only on the external struct, it will
+not affect the internal struct definitions.
+So the regression is fixed by specifiying the "__packed" attribute also on the
+internal structs.
+
+This patch should go into 3.3, as it fixes a regression introduced in the new
+kernel version.
+
+Signed-off-by: Gianluca Gennari <gennarone@gmail.com>
+Signed-off-by: Ryley Angus <rangus@student.unimelb.edu.au>
+Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/staging/media/as102/as102_fw.h    |    2 
+ drivers/staging/media/as102/as10x_cmd.h   |   80 +++++++++++++++---------------
+ drivers/staging/media/as102/as10x_types.h |    2 
+ 3 files changed, 42 insertions(+), 42 deletions(-)
+
+--- a/drivers/staging/media/as102/as102_fw.h
++++ b/drivers/staging/media/as102/as102_fw.h
+@@ -29,7 +29,7 @@ struct as10x_fw_pkt_t {
+       union {
+               unsigned char request[2];
+               unsigned char length[2];
+-      } u;
++      } __packed u;
+       struct as10x_raw_fw_pkt raw;
+ } __packed;
+--- a/drivers/staging/media/as102/as10x_cmd.h
++++ b/drivers/staging/media/as102/as10x_cmd.h
+@@ -99,14 +99,14 @@ union as10x_turn_on {
+       struct {
+               /* request identifier */
+               uint16_t proc_id;
+-      } req;
++      } __packed req;
+       /* response */
+       struct {
+               /* response identifier */
+               uint16_t proc_id;
+               /* error */
+               uint8_t error;
+-      } rsp;
++      } __packed rsp;
+ } __packed;
+ union as10x_turn_off {
+@@ -114,14 +114,14 @@ union as10x_turn_off {
+       struct {
+               /* request identifier */
+               uint16_t proc_id;
+-      } req;
++      } __packed req;
+       /* response */
+       struct {
+               /* response identifier */
+               uint16_t proc_id;
+               /* error */
+               uint8_t err;
+-      } rsp;
++      } __packed rsp;
+ } __packed;
+ union as10x_set_tune {
+@@ -131,14 +131,14 @@ union as10x_set_tune {
+               uint16_t proc_id;
+               /* tune params */
+               struct as10x_tune_args args;
+-      } req;
++      } __packed req;
+       /* response */
+       struct {
+               /* response identifier */
+               uint16_t proc_id;
+               /* response error */
+               uint8_t error;
+-      } rsp;
++      } __packed rsp;
+ } __packed;
+ union as10x_get_tune_status {
+@@ -146,7 +146,7 @@ union as10x_get_tune_status {
+       struct {
+               /* request identifier */
+               uint16_t proc_id;
+-      } req;
++      } __packed req;
+       /* response */
+       struct {
+               /* response identifier */
+@@ -155,7 +155,7 @@ union as10x_get_tune_status {
+               uint8_t error;
+               /* tune status */
+               struct as10x_tune_status sts;
+-      } rsp;
++      } __packed rsp;
+ } __packed;
+ union as10x_get_tps {
+@@ -163,7 +163,7 @@ union as10x_get_tps {
+       struct {
+               /* request identifier */
+               uint16_t proc_id;
+-      } req;
++      } __packed req;
+       /* response */
+       struct {
+               /* response identifier */
+@@ -172,7 +172,7 @@ union as10x_get_tps {
+               uint8_t error;
+               /* tps details */
+               struct as10x_tps tps;
+-      } rsp;
++      } __packed rsp;
+ } __packed;
+ union as10x_common {
+@@ -180,14 +180,14 @@ union as10x_common {
+       struct {
+               /* request identifier */
+               uint16_t  proc_id;
+-      } req;
++      } __packed req;
+       /* response */
+       struct {
+               /* response identifier */
+               uint16_t proc_id;
+               /* response error */
+               uint8_t error;
+-      } rsp;
++      } __packed rsp;
+ } __packed;
+ union as10x_add_pid_filter {
+@@ -201,7 +201,7 @@ union as10x_add_pid_filter {
+               uint8_t stream_type;
+               /* PID index in filter table */
+               uint8_t idx;
+-      } req;
++      } __packed req;
+       /* response */
+       struct {
+               /* response identifier */
+@@ -210,7 +210,7 @@ union as10x_add_pid_filter {
+               uint8_t error;
+               /* Filter id */
+               uint8_t filter_id;
+-      } rsp;
++      } __packed rsp;
+ } __packed;
+ union as10x_del_pid_filter {
+@@ -220,14 +220,14 @@ union as10x_del_pid_filter {
+               uint16_t  proc_id;
+               /* PID to remove */
+               uint16_t  pid;
+-      } req;
++      } __packed req;
+       /* response */
+       struct {
+               /* response identifier */
+               uint16_t proc_id;
+               /* response error */
+               uint8_t error;
+-      } rsp;
++      } __packed rsp;
+ } __packed;
+ union as10x_start_streaming {
+@@ -235,14 +235,14 @@ union as10x_start_streaming {
+       struct {
+               /* request identifier */
+               uint16_t proc_id;
+-      } req;
++      } __packed req;
+       /* response */
+       struct {
+               /* response identifier */
+               uint16_t proc_id;
+               /* error */
+               uint8_t error;
+-      } rsp;
++      } __packed rsp;
+ } __packed;
+ union as10x_stop_streaming {
+@@ -250,14 +250,14 @@ union as10x_stop_streaming {
+       struct {
+               /* request identifier */
+               uint16_t proc_id;
+-      } req;
++      } __packed req;
+       /* response */
+       struct {
+               /* response identifier */
+               uint16_t proc_id;
+               /* error */
+               uint8_t error;
+-      } rsp;
++      } __packed rsp;
+ } __packed;
+ union as10x_get_demod_stats {
+@@ -265,7 +265,7 @@ union as10x_get_demod_stats {
+       struct {
+               /* request identifier */
+               uint16_t proc_id;
+-      } req;
++      } __packed req;
+       /* response */
+       struct {
+               /* response identifier */
+@@ -274,7 +274,7 @@ union as10x_get_demod_stats {
+               uint8_t error;
+               /* demod stats */
+               struct as10x_demod_stats stats;
+-      } rsp;
++      } __packed rsp;
+ } __packed;
+ union as10x_get_impulse_resp {
+@@ -282,7 +282,7 @@ union as10x_get_impulse_resp {
+       struct {
+               /* request identifier */
+               uint16_t proc_id;
+-      } req;
++      } __packed req;
+       /* response */
+       struct {
+               /* response identifier */
+@@ -291,7 +291,7 @@ union as10x_get_impulse_resp {
+               uint8_t error;
+               /* impulse response ready */
+               uint8_t is_ready;
+-      } rsp;
++      } __packed rsp;
+ } __packed;
+ union as10x_fw_context {
+@@ -305,7 +305,7 @@ union as10x_fw_context {
+               uint16_t tag;
+               /* context request type */
+               uint16_t type;
+-      } req;
++      } __packed req;
+       /* response */
+       struct {
+               /* response identifier */
+@@ -316,7 +316,7 @@ union as10x_fw_context {
+               uint16_t type;
+               /* error */
+               uint8_t error;
+-      } rsp;
++      } __packed rsp;
+ } __packed;
+ union as10x_set_register {
+@@ -328,14 +328,14 @@ union as10x_set_register {
+               struct as10x_register_addr reg_addr;
+               /* register content */
+               struct as10x_register_value reg_val;
+-      } req;
++      } __packed req;
+       /* response */
+       struct {
+               /* response identifier */
+               uint16_t proc_id;
+               /* error */
+               uint8_t error;
+-      } rsp;
++      } __packed rsp;
+ } __packed;
+ union as10x_get_register {
+@@ -345,7 +345,7 @@ union as10x_get_register {
+               uint16_t proc_id;
+               /* register description */
+               struct as10x_register_addr reg_addr;
+-      } req;
++      } __packed req;
+       /* response */
+       struct {
+               /* response identifier */
+@@ -354,7 +354,7 @@ union as10x_get_register {
+               uint8_t error;
+               /* register content */
+               struct as10x_register_value reg_val;
+-      } rsp;
++      } __packed rsp;
+ } __packed;
+ union as10x_cfg_change_mode {
+@@ -364,14 +364,14 @@ union as10x_cfg_change_mode {
+               uint16_t proc_id;
+               /* mode */
+               uint8_t mode;
+-      } req;
++      } __packed req;
+       /* response */
+       struct {
+               /* response identifier */
+               uint16_t proc_id;
+               /* error */
+               uint8_t error;
+-      } rsp;
++      } __packed rsp;
+ } __packed;
+ struct as10x_cmd_header_t {
+@@ -394,7 +394,7 @@ union as10x_dump_memory {
+               struct as10x_register_addr reg_addr;
+               /* nb blocks to read */
+               uint16_t num_blocks;
+-      } req;
++      } __packed req;
+       /* response */
+       struct {
+               /* response identifier */
+@@ -408,8 +408,8 @@ union as10x_dump_memory {
+                       uint8_t  data8[DUMP_BLOCK_SIZE];
+                       uint16_t data16[DUMP_BLOCK_SIZE / sizeof(uint16_t)];
+                       uint32_t data32[DUMP_BLOCK_SIZE / sizeof(uint32_t)];
+-              } u;
+-      } rsp;
++              } __packed u;
++      } __packed rsp;
+ } __packed;
+ union as10x_dumplog_memory {
+@@ -418,7 +418,7 @@ union as10x_dumplog_memory {
+               uint16_t proc_id;
+               /* dump memory type request */
+               uint8_t dump_req;
+-      } req;
++      } __packed req;
+       struct {
+               /* request identifier */
+               uint16_t proc_id;
+@@ -428,7 +428,7 @@ union as10x_dumplog_memory {
+               uint8_t dump_rsp;
+               /* dump data */
+               uint8_t data[DUMP_BLOCK_SIZE];
+-      } rsp;
++      } __packed rsp;
+ } __packed;
+ union as10x_raw_data {
+@@ -437,14 +437,14 @@ union as10x_raw_data {
+               uint16_t proc_id;
+               uint8_t data[64 - sizeof(struct as10x_cmd_header_t)
+                            - 2 /* proc_id */];
+-      } req;
++      } __packed req;
+       /* response */
+       struct {
+               uint16_t proc_id;
+               uint8_t error;
+               uint8_t data[64 - sizeof(struct as10x_cmd_header_t)
+                            - 2 /* proc_id */ - 1 /* rc */];
+-      } rsp;
++      } __packed rsp;
+ } __packed;
+ struct as10x_cmd_t {
+@@ -469,7 +469,7 @@ struct as10x_cmd_t {
+               union as10x_dump_memory         dump_memory;
+               union as10x_dumplog_memory      dumplog_memory;
+               union as10x_raw_data            raw_data;
+-      } body;
++      } __packed body;
+ } __packed;
+ struct as10x_token_cmd_t {
+--- a/drivers/staging/media/as102/as10x_types.h
++++ b/drivers/staging/media/as102/as10x_types.h
+@@ -181,7 +181,7 @@ struct as10x_register_value {
+               uint8_t  value8;   /* 8 bit value */
+               uint16_t value16;  /* 16 bit value */
+               uint32_t value32;  /* 32 bit value */
+-      } u;
++      } __packed u;
+ } __packed;
+ struct as10x_register_addr {
diff --git a/queue-3.3/au8522-bug-fix-enable-modulation-after-tune-instead-of-before-tuning.patch b/queue-3.3/au8522-bug-fix-enable-modulation-after-tune-instead-of-before-tuning.patch
new file mode 100644 (file)
index 0000000..3c87d62
--- /dev/null
@@ -0,0 +1,53 @@
+From ef3d2dc366c8c32d58dbbf9898cfd4f853ff8fe0 Mon Sep 17 00:00:00 2001
+From: Michael Krufky <mkrufky@kernellabs.com>
+Date: Mon, 12 Mar 2012 17:07:22 -0300
+Subject: [media] au8522: bug-fix: enable modulation AFTER tune (instead of before tuning)
+
+From: Michael Krufky <mkrufky@kernellabs.com>
+
+commit ef3d2dc366c8c32d58dbbf9898cfd4f853ff8fe0 upstream.
+
+The au8522 driver programs the tuner after programming the demodulator,
+but the tuner should be programmed first. This patch fixes this behavior.
+
+EDIT: Apparantly Devin created a similar patch some time ago, but hasn't
+submitted it for merge.  I never saw his patch, but I thank him anyhow
+for his efforts.  In addition, Devin pointed out a flaw in my patch:
+
+This newly generated patch takes Devin's comments into account.
+
+Thanks-to: Devin Heitmueller <dheitmueller@kernellabs.com>
+Signed-off-by: Michael Krufky <mkrufky@linuxtv.org>
+Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/media/dvb/frontends/au8522_dig.c |   10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
+
+--- a/drivers/media/dvb/frontends/au8522_dig.c
++++ b/drivers/media/dvb/frontends/au8522_dig.c
+@@ -588,11 +588,6 @@ static int au8522_set_frontend(struct dv
+           (state->current_modulation == c->modulation))
+               return 0;
+-      au8522_enable_modulation(fe, c->modulation);
+-
+-      /* Allow the demod to settle */
+-      msleep(100);
+-
+       if (fe->ops.tuner_ops.set_params) {
+               if (fe->ops.i2c_gate_ctrl)
+                       fe->ops.i2c_gate_ctrl(fe, 1);
+@@ -604,6 +599,11 @@ static int au8522_set_frontend(struct dv
+       if (ret < 0)
+               return ret;
++      /* Allow the tuner to settle */
++      msleep(100);
++
++      au8522_enable_modulation(fe, c->modulation);
++
+       state->current_frequency = c->frequency;
+       return 0;
diff --git a/queue-3.3/hwmon-fam15h_power-correct-sign-extension-of-running_avg_capture.patch b/queue-3.3/hwmon-fam15h_power-correct-sign-extension-of-running_avg_capture.patch
new file mode 100644 (file)
index 0000000..8868f3a
--- /dev/null
@@ -0,0 +1,33 @@
+From fc0900cbda9243957d812cd6b4cc87965f9fe75f Mon Sep 17 00:00:00 2001
+From: Andreas Herrmann <andreas.herrmann3@amd.com>
+Date: Fri, 23 Mar 2012 10:02:17 +0100
+Subject: hwmon: (fam15h_power) Correct sign extension of running_avg_capture
+
+From: Andreas Herrmann <andreas.herrmann3@amd.com>
+
+commit fc0900cbda9243957d812cd6b4cc87965f9fe75f upstream.
+
+Wrong bit was used for sign extension which caused wrong end results.
+Thanks to Andre for spotting this bug.
+
+Reported-by: Andre Przywara <andre.przywara@amd.com>
+Signed-off-by: Andreas Herrmann <andreas.herrmann3@amd.com>
+Acked-by: Guenter Roeck <guenter.roeck@ericsson.com>
+Signed-off-by: Jean Delvare <khali@linux-fr.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/hwmon/fam15h_power.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/hwmon/fam15h_power.c
++++ b/drivers/hwmon/fam15h_power.c
+@@ -60,7 +60,7 @@ static ssize_t show_power(struct device
+       pci_bus_read_config_dword(f4->bus, PCI_DEVFN(PCI_SLOT(f4->devfn), 5),
+                                 REG_TDP_RUNNING_AVERAGE, &val);
+       running_avg_capture = (val >> 4) & 0x3fffff;
+-      running_avg_capture = sign_extend32(running_avg_capture, 22);
++      running_avg_capture = sign_extend32(running_avg_capture, 21);
+       running_avg_range = val & 0xf;
+       pci_bus_read_config_dword(f4->bus, PCI_DEVFN(PCI_SLOT(f4->devfn), 5),
diff --git a/queue-3.3/iommu-amd-fix-section-warning-for-prealloc_protection_domains.patch b/queue-3.3/iommu-amd-fix-section-warning-for-prealloc_protection_domains.patch
new file mode 100644 (file)
index 0000000..1d98978
--- /dev/null
@@ -0,0 +1,36 @@
+From cebd5fa4d3046d5b43ce1836a0120612822a7fb0 Mon Sep 17 00:00:00 2001
+From: Steffen Persvold <sp@numascale.com>
+Date: Thu, 15 Mar 2012 15:20:29 +0100
+Subject: iommu/amd: Fix section warning for prealloc_protection_domains
+
+From: Steffen Persvold <sp@numascale.com>
+
+commit cebd5fa4d3046d5b43ce1836a0120612822a7fb0 upstream.
+
+Fix the following section warning in drivers/iommu/amd_iommu.c :
+
+WARNING: vmlinux.o(.text+0x526e77): Section mismatch in reference from the function prealloc_protection_domains() to the function .init.text:alloc_passthrough_domain()
+The function prealloc_protection_domains() references
+the function __init alloc_passthrough_domain().
+This is often because prealloc_protection_domains lacks a __init
+annotation or the annotation of alloc_passthrough_domain is wrong.
+
+Signed-off-by: Steffen Persvold <sp@numascale.com>
+Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/iommu/amd_iommu.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/iommu/amd_iommu.c
++++ b/drivers/iommu/amd_iommu.c
+@@ -2804,7 +2804,7 @@ static int amd_iommu_dma_supported(struc
+  * we don't need to preallocate the protection domains anymore.
+  * For now we have to.
+  */
+-static void prealloc_protection_domains(void)
++static void __init prealloc_protection_domains(void)
+ {
+       struct iommu_dev_data *dev_data;
+       struct dma_ops_domain *dma_dom;
diff --git a/queue-3.3/iommu-amd-make-sure-iommu-interrupts-are-re-enabled-on-resume.patch b/queue-3.3/iommu-amd-make-sure-iommu-interrupts-are-re-enabled-on-resume.patch
new file mode 100644 (file)
index 0000000..e83ebcf
--- /dev/null
@@ -0,0 +1,79 @@
+From 9ddd592a191b32f2ee6c4b6ed2bd52665c3a49f5 Mon Sep 17 00:00:00 2001
+From: Joerg Roedel <joerg.roedel@amd.com>
+Date: Thu, 15 Mar 2012 16:29:47 +0100
+Subject: iommu/amd: Make sure IOMMU interrupts are re-enabled on resume
+
+From: Joerg Roedel <joerg.roedel@amd.com>
+
+commit 9ddd592a191b32f2ee6c4b6ed2bd52665c3a49f5 upstream.
+
+Unfortunatly the interrupts for the event log and the
+peripheral page-faults are only enabled at boot but not
+re-enabled at resume. Fix that.
+
+Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/iommu/amd_iommu_init.c |   30 ++++++++++++++++++++----------
+ 1 file changed, 20 insertions(+), 10 deletions(-)
+
+--- a/drivers/iommu/amd_iommu_init.c
++++ b/drivers/iommu/amd_iommu_init.c
+@@ -1131,8 +1131,9 @@ static int iommu_setup_msi(struct amd_io
+ {
+       int r;
+-      if (pci_enable_msi(iommu->dev))
+-              return 1;
++      r = pci_enable_msi(iommu->dev);
++      if (r)
++              return r;
+       r = request_threaded_irq(iommu->dev->irq,
+                                amd_iommu_int_handler,
+@@ -1142,27 +1143,36 @@ static int iommu_setup_msi(struct amd_io
+       if (r) {
+               pci_disable_msi(iommu->dev);
+-              return 1;
++              return r;
+       }
+       iommu->int_enabled = true;
+-      iommu_feature_enable(iommu, CONTROL_EVT_INT_EN);
+-
+-      if (iommu->ppr_log != NULL)
+-              iommu_feature_enable(iommu, CONTROL_PPFINT_EN);
+       return 0;
+ }
+ static int iommu_init_msi(struct amd_iommu *iommu)
+ {
++      int ret;
++
+       if (iommu->int_enabled)
+-              return 0;
++              goto enable_faults;
+       if (pci_find_capability(iommu->dev, PCI_CAP_ID_MSI))
+-              return iommu_setup_msi(iommu);
++              ret = iommu_setup_msi(iommu);
++      else
++              ret = -ENODEV;
++
++      if (ret)
++              return ret;
+-      return 1;
++enable_faults:
++      iommu_feature_enable(iommu, CONTROL_EVT_INT_EN);
++
++      if (iommu->ppr_log != NULL)
++              iommu_feature_enable(iommu, CONTROL_PPFINT_EN);
++
++      return 0;
+ }
+ /****************************************************************************
diff --git a/queue-3.3/lgdt330x-fix-signedness-error-in-i2c_read_demod_bytes.patch b/queue-3.3/lgdt330x-fix-signedness-error-in-i2c_read_demod_bytes.patch
new file mode 100644 (file)
index 0000000..e30e67c
--- /dev/null
@@ -0,0 +1,50 @@
+From 34817174fca0c5512c2d5b6ea0fc37a0337ce1d8 Mon Sep 17 00:00:00 2001
+From: Xi Wang <xi.wang@gmail.com>
+Date: Tue, 14 Feb 2012 14:32:41 -0300
+Subject: [media] lgdt330x: fix signedness error in i2c_read_demod_bytes()
+
+From: Xi Wang <xi.wang@gmail.com>
+
+commit 34817174fca0c5512c2d5b6ea0fc37a0337ce1d8 upstream.
+
+The error handling in lgdt3303_read_status() and lgdt330x_read_ucblocks()
+doesn't work, because i2c_read_demod_bytes() returns a u8 and (err < 0)
+is always false.
+
+        err = i2c_read_demod_bytes(state, 0x58, buf, 1);
+        if (err < 0)
+                return err;
+
+Change the return type of i2c_read_demod_bytes() to int.  Also change
+the return value on error to -EIO to make (err < 0) work.
+
+Signed-off-by: Xi Wang <xi.wang@gmail.com>
+Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/media/dvb/frontends/lgdt330x.c |    6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+--- a/drivers/media/dvb/frontends/lgdt330x.c
++++ b/drivers/media/dvb/frontends/lgdt330x.c
+@@ -104,8 +104,8 @@ static int i2c_write_demod_bytes (struct
+  * then reads the data returned for (len) bytes.
+  */
+-static u8 i2c_read_demod_bytes (struct lgdt330x_state* state,
+-                             enum I2C_REG reg, u8* buf, int len)
++static int i2c_read_demod_bytes(struct lgdt330x_state *state,
++                              enum I2C_REG reg, u8 *buf, int len)
+ {
+       u8 wr [] = { reg };
+       struct i2c_msg msg [] = {
+@@ -118,6 +118,8 @@ static u8 i2c_read_demod_bytes (struct l
+       ret = i2c_transfer(state->i2c, msg, 2);
+       if (ret != 2) {
+               printk(KERN_WARNING "lgdt330x: %s: addr 0x%02x select 0x%02x error (ret == %i)\n", __func__, state->config->demod_address, reg, ret);
++              if (ret >= 0)
++                      ret = -EIO;
+       } else {
+               ret = 0;
+       }
diff --git a/queue-3.3/mxl111sf-fix-error-on-stream-stop-in-mxl111sf_ep6_streaming_ctrl.patch b/queue-3.3/mxl111sf-fix-error-on-stream-stop-in-mxl111sf_ep6_streaming_ctrl.patch
new file mode 100644 (file)
index 0000000..51bfca4
--- /dev/null
@@ -0,0 +1,42 @@
+From 3be5bb71fbf18f83cb88b54a62a78e03e5a4f30a Mon Sep 17 00:00:00 2001
+From: Michael Krufky <mkrufky@linuxtv.org>
+Date: Sun, 18 Mar 2012 14:35:57 -0300
+Subject: [media] mxl111sf: fix error on stream stop in mxl111sf_ep6_streaming_ctrl()
+
+From: Michael Krufky <mkrufky@linuxtv.org>
+
+commit 3be5bb71fbf18f83cb88b54a62a78e03e5a4f30a upstream.
+
+Remove unnecessary register access in mxl111sf_ep6_streaming_ctrl()
+
+This code breaks driver operation in kernel 3.3 and later, although
+it works properly in 3.2  Disable register access to 0x12 for now.
+
+Signed-off-by: Michael Krufky <mkrufky@linuxtv.org>
+Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/media/dvb/dvb-usb/mxl111sf.c |    6 ++----
+ 1 file changed, 2 insertions(+), 4 deletions(-)
+
+--- a/drivers/media/dvb/dvb-usb/mxl111sf.c
++++ b/drivers/media/dvb/dvb-usb/mxl111sf.c
+@@ -351,15 +351,13 @@ static int mxl111sf_ep6_streaming_ctrl(s
+                                             adap_state->ep6_clockphase,
+                                             0, 0);
+               mxl_fail(ret);
++#if 0
+       } else {
+               ret = mxl111sf_disable_656_port(state);
+               mxl_fail(ret);
++#endif
+       }
+-      mxl111sf_read_reg(state, 0x12, &tmp);
+-      tmp &= ~0x04;
+-      mxl111sf_write_reg(state, 0x12, tmp);
+-
+       return ret;
+ }
diff --git a/queue-3.3/proc-ns-use-d_set_d_op-api-to-set-dentry-ops-in-proc_ns_instantiate.patch b/queue-3.3/proc-ns-use-d_set_d_op-api-to-set-dentry-ops-in-proc_ns_instantiate.patch
new file mode 100644 (file)
index 0000000..c7c574f
--- /dev/null
@@ -0,0 +1,46 @@
+From 1b26c9b334044cff6d1d2698f2be41bc7d9a0864 Mon Sep 17 00:00:00 2001
+From: Pravin B Shelar <pshelar@nicira.com>
+Date: Fri, 23 Mar 2012 15:02:55 -0700
+Subject: proc-ns: use d_set_d_op() API to set dentry ops in proc_ns_instantiate().
+
+From: Pravin B Shelar <pshelar@nicira.com>
+
+commit 1b26c9b334044cff6d1d2698f2be41bc7d9a0864 upstream.
+
+The namespace cleanup path leaks a dentry which holds a reference count
+on a network namespace.  Keeping that network namespace from being freed
+when the last user goes away.  Leaving things like vlan devices in the
+leaked network namespace.
+
+If you use ip netns add for much real work this problem becomes apparent
+pretty quickly.  It light testing the problem hides because frequently
+you simply don't notice the leak.
+
+Use d_set_d_op() so that DCACHE_OP_* flags are set correctly.
+
+This issue exists back to 3.0.
+
+Acked-by: "Eric W. Biederman" <ebiederm@xmission.com>
+Reported-by: Justin Pettit <jpettit@nicira.com>
+Signed-off-by: Pravin B Shelar <pshelar@nicira.com>
+Signed-off-by: Jesse Gross <jesse@nicira.com>
+Cc: David Miller <davem@davemloft.net>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ fs/proc/namespaces.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/fs/proc/namespaces.c
++++ b/fs/proc/namespaces.c
+@@ -53,7 +53,7 @@ static struct dentry *proc_ns_instantiat
+       ei->ns_ops    = ns_ops;
+       ei->ns        = ns;
+-      dentry->d_op = &pid_dentry_operations;
++      d_set_d_op(dentry, &pid_dentry_operations);
+       d_add(dentry, inode);
+       /* Close the race of the process dying before we return the dentry */
+       if (pid_revalidate(dentry, NULL))
diff --git a/queue-3.3/pvrusb2-fix-7mhz-8mhz-dvb-t-tuner-support-for-hvr1900-rev-d1f5.patch b/queue-3.3/pvrusb2-fix-7mhz-8mhz-dvb-t-tuner-support-for-hvr1900-rev-d1f5.patch
new file mode 100644 (file)
index 0000000..06648bb
--- /dev/null
@@ -0,0 +1,48 @@
+From 9ab2393fc3e460cd2040de1483918eb17abb822f Mon Sep 17 00:00:00 2001
+From: Michael Krufky <mkrufky@linuxtv.org>
+Date: Tue, 7 Feb 2012 13:28:33 -0300
+Subject: [media] pvrusb2: fix 7MHz & 8MHz DVB-T tuner support for HVR1900 rev D1F5
+
+From: Michael Krufky <mkrufky@linuxtv.org>
+
+commit 9ab2393fc3e460cd2040de1483918eb17abb822f upstream.
+
+The D1F5 revision of the WinTV HVR-1900 uses a tda18271c2 tuner
+instead of a tda18271c1 tuner as used in revision D1E9. To
+account for this, we must hardcode the frontend configuration
+to use the same IF frequency configuration for both revisions
+of the device.
+
+6MHz DVB-T is unaffected by this issue, as the recommended
+IF Frequency configuration for 6MHz DVB-T is the same on both
+c1 and c2 revisions of the tda18271 tuner.
+
+Signed-off-by: Michael Krufky <mkrufky@linuxtv.org>
+Cc: Mike Isely <isely@pobox.com>
+Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/media/video/pvrusb2/pvrusb2-devattr.c |   10 ++++++++++
+ 1 file changed, 10 insertions(+)
+
+--- a/drivers/media/video/pvrusb2/pvrusb2-devattr.c
++++ b/drivers/media/video/pvrusb2/pvrusb2-devattr.c
+@@ -320,7 +320,17 @@ static struct tda829x_config tda829x_no_
+       .probe_tuner = TDA829X_DONT_PROBE,
+ };
++static struct tda18271_std_map hauppauge_tda18271_dvbt_std_map = {
++        .dvbt_6   = { .if_freq = 3300, .agc_mode = 3, .std = 4,
++                      .if_lvl = 1, .rfagc_top = 0x37, },
++        .dvbt_7   = { .if_freq = 3800, .agc_mode = 3, .std = 5,
++                      .if_lvl = 1, .rfagc_top = 0x37, },
++        .dvbt_8   = { .if_freq = 4300, .agc_mode = 3, .std = 6,
++                      .if_lvl = 1, .rfagc_top = 0x37, },
++};
++
+ static struct tda18271_config hauppauge_tda18271_dvb_config = {
++      .std_map = &hauppauge_tda18271_dvbt_std_map,
+       .gate    = TDA18271_GATE_ANALOG,
+       .output_opt = TDA18271_OUTPUT_LT_OFF,
+ };
index 1fb8af832d28bb95ce58a2ae025321095de1b5cc..d18d991f504f5ebb4d11b1f96dede702f29a4678 100644 (file)
@@ -110,3 +110,16 @@ ubi-fix-eraseblock-picking-criteria.patch
 sunrpc-we-must-not-use-list_for_each_entry_safe-in-rpc_wake_up.patch
 usbnet-increase-urb-reference-count-before-usb_unlink_urb.patch
 usbnet-don-t-clear-urb-dev-in-tx_complete.patch
+x86-32-fix-typo-for-mq_getsetattr-in-syscall-table.patch
+x86-32-fix-endless-loop-when-processing-signals-for-kernel-tasks.patch
+proc-ns-use-d_set_d_op-api-to-set-dentry-ops-in-proc_ns_instantiate.patch
+iommu-amd-fix-section-warning-for-prealloc_protection_domains.patch
+iommu-amd-make-sure-iommu-interrupts-are-re-enabled-on-resume.patch
+sysctl-protect-poll-in-entries-that-may-go-away.patch
+hwmon-fam15h_power-correct-sign-extension-of-running_avg_capture.patch
+lgdt330x-fix-signedness-error-in-i2c_read_demod_bytes.patch
+as102-add-__packed-attribute-to-structs-defined-inside-packed-structs.patch
+tda10071-fix-the-delivery-system.patch
+au8522-bug-fix-enable-modulation-after-tune-instead-of-before-tuning.patch
+pvrusb2-fix-7mhz-8mhz-dvb-t-tuner-support-for-hvr1900-rev-d1f5.patch
+mxl111sf-fix-error-on-stream-stop-in-mxl111sf_ep6_streaming_ctrl.patch
diff --git a/queue-3.3/sysctl-protect-poll-in-entries-that-may-go-away.patch b/queue-3.3/sysctl-protect-poll-in-entries-that-may-go-away.patch
new file mode 100644 (file)
index 0000000..ef5070d
--- /dev/null
@@ -0,0 +1,95 @@
+From 4e474a00d7ff746ed177ddae14fa8b2d4bad7a00 Mon Sep 17 00:00:00 2001
+From: Lucas De Marchi <lucas.demarchi@profusion.mobi>
+Date: Thu, 22 Mar 2012 14:42:22 -0700
+Subject: sysctl: protect poll() in entries that may go away
+
+From: Lucas De Marchi <lucas.demarchi@profusion.mobi>
+
+commit 4e474a00d7ff746ed177ddae14fa8b2d4bad7a00 upstream.
+
+Protect code accessing ctl_table by grabbing the header with grab_header()
+and after releasing with sysctl_head_finish().  This is needed if poll()
+is called in entries created by modules: currently only hostname and
+domainname support poll(), but this bug may be triggered when/if modules
+use it and if user called poll() in a file that doesn't support it.
+
+Dave Jones reported the following when using a syscall fuzzer while
+hibernating/resuming:
+
+RIP: 0010:[<ffffffff81233e3e>]  [<ffffffff81233e3e>] proc_sys_poll+0x4e/0x90
+RAX: 0000000000000145 RBX: ffff88020cab6940 RCX: 0000000000000000
+RDX: ffffffff81233df0 RSI: 6b6b6b6b6b6b6b6b RDI: ffff88020cab6940
+[ ... ]
+Code: 00 48 89 fb 48 89 f1 48 8b 40 30 4c 8b 60 e8 b8 45 01 00 00 49 83
+7c 24 28 00 74 2e 49 8b 74 24 30 48 85 f6 74 24 48 85 c9 75 32 <8b> 16
+b8 45 01 00 00 48 63 d2 49 39 d5 74 10 8b 06 48 98 48 89
+
+If an entry goes away while we are polling() it, ctl_table may not exist
+anymore.
+
+Reported-by: Dave Jones <davej@redhat.com>
+Signed-off-by: Lucas De Marchi <lucas.demarchi@profusion.mobi>
+Cc: Al Viro <viro@zeniv.linux.org.uk>
+Cc: Linus Torvalds <torvalds@linux-foundation.org>
+Cc: Alexey Dobriyan <adobriyan@gmail.com>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ fs/proc/proc_sysctl.c |   17 ++++++++++++++++-
+ 1 file changed, 16 insertions(+), 1 deletion(-)
+
+--- a/fs/proc/proc_sysctl.c
++++ b/fs/proc/proc_sysctl.c
+@@ -188,20 +188,32 @@ static ssize_t proc_sys_write(struct fil
+ static int proc_sys_open(struct inode *inode, struct file *filp)
+ {
++      struct ctl_table_header *head = grab_header(inode);
+       struct ctl_table *table = PROC_I(inode)->sysctl_entry;
++      /* sysctl was unregistered */
++      if (IS_ERR(head))
++              return PTR_ERR(head);
++
+       if (table->poll)
+               filp->private_data = proc_sys_poll_event(table->poll);
++      sysctl_head_finish(head);
++
+       return 0;
+ }
+ static unsigned int proc_sys_poll(struct file *filp, poll_table *wait)
+ {
+       struct inode *inode = filp->f_path.dentry->d_inode;
++      struct ctl_table_header *head = grab_header(inode);
+       struct ctl_table *table = PROC_I(inode)->sysctl_entry;
+-      unsigned long event = (unsigned long)filp->private_data;
+       unsigned int ret = DEFAULT_POLLMASK;
++      unsigned long event;
++
++      /* sysctl was unregistered */
++      if (IS_ERR(head))
++              return POLLERR | POLLHUP;
+       if (!table->proc_handler)
+               goto out;
+@@ -209,6 +221,7 @@ static unsigned int proc_sys_poll(struct
+       if (!table->poll)
+               goto out;
++      event = (unsigned long)filp->private_data;
+       poll_wait(filp, &table->poll->wait, wait);
+       if (event != atomic_read(&table->poll->event)) {
+@@ -217,6 +230,8 @@ static unsigned int proc_sys_poll(struct
+       }
+ out:
++      sysctl_head_finish(head);
++
+       return ret;
+ }
diff --git a/queue-3.3/tda10071-fix-the-delivery-system.patch b/queue-3.3/tda10071-fix-the-delivery-system.patch
new file mode 100644 (file)
index 0000000..688c1a1
--- /dev/null
@@ -0,0 +1,36 @@
+From 2b49fad59513b07f976c9711b99f93ae74d081c5 Mon Sep 17 00:00:00 2001
+From: Antti Palosaari <crope@iki.fi>
+Date: Mon, 12 Mar 2012 18:21:20 -0300
+Subject: [media] tda10071: fix the delivery system
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+From: Antti Palosaari <crope@iki.fi>
+
+commit 2b49fad59513b07f976c9711b99f93ae74d081c5 upstream.
+
+Commit b2a29b578d9c21b2e5c88020f830d3c42115c51d sets accidentally
+supported delivery systems as DVB-T/T2 whilst it should be
+DVB-S/S2. Due to that frontend cannot be used at all.
+
+Reported-by: Jiří Zelenka <klacek@bubakov.net>
+Signed-off-by: Antti Palosaari <crope@iki.fi>
+Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/media/dvb/frontends/tda10071.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/media/dvb/frontends/tda10071.c
++++ b/drivers/media/dvb/frontends/tda10071.c
+@@ -1215,7 +1215,7 @@ error:
+ EXPORT_SYMBOL(tda10071_attach);
+ static struct dvb_frontend_ops tda10071_ops = {
+-      .delsys = { SYS_DVBT, SYS_DVBT2 },
++      .delsys = { SYS_DVBS, SYS_DVBS2 },
+       .info = {
+               .name = "NXP TDA10071",
+               .frequency_min = 950000,
diff --git a/queue-3.3/x86-32-fix-endless-loop-when-processing-signals-for-kernel-tasks.patch b/queue-3.3/x86-32-fix-endless-loop-when-processing-signals-for-kernel-tasks.patch
new file mode 100644 (file)
index 0000000..8f448d5
--- /dev/null
@@ -0,0 +1,82 @@
+From 29a2e2836ff9ea65a603c89df217f4198973a74f Mon Sep 17 00:00:00 2001
+From: Dmitry Adamushko <dmitry.adamushko@gmail.com>
+Date: Thu, 22 Mar 2012 21:39:25 +0100
+Subject: x86-32: Fix endless loop when processing signals for kernel tasks
+
+From: Dmitry Adamushko <dmitry.adamushko@gmail.com>
+
+commit 29a2e2836ff9ea65a603c89df217f4198973a74f upstream.
+
+The problem occurs on !CONFIG_VM86 kernels [1] when a kernel-mode task
+returns from a system call with a pending signal.
+
+A real-life scenario is a child of 'khelper' returning from a failed
+kernel_execve() in ____call_usermodehelper() [ kernel/kmod.c ].
+kernel_execve() fails due to a pending SIGKILL, which is the result of
+"kill -9 -1" (at least, busybox's init does it upon reboot).
+
+The loop is as follows:
+
+* syscall_exit_work:
+ - work_pending:            // start_of_the_loop
+ - work_notify_sig:
+   - do_notify_resume()
+     - do_signal()
+       - if (!user_mode(regs)) return;
+ - resume_userspace         // TIF_SIGPENDING is still set
+ - work_pending             // so we call work_pending => goto
+                            // start_of_the_loop
+
+More information can be found in another LKML thread:
+http://www.serverphorums.com/read.php?12,457826
+
+[1] the problem was also seen on MIPS.
+
+Signed-off-by: Dmitry Adamushko <dmitry.adamushko@gmail.com>
+Link: http://lkml.kernel.org/r/1332448765.2299.68.camel@dimm
+Cc: Oleg Nesterov <oleg@redhat.com>
+Cc: Roland McGrath <roland@hack.frob.com>
+Cc: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: H. Peter Anvin <hpa@zytor.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ arch/x86/kernel/entry_32.S |   17 ++++++++++-------
+ 1 file changed, 10 insertions(+), 7 deletions(-)
+
+--- a/arch/x86/kernel/entry_32.S
++++ b/arch/x86/kernel/entry_32.S
+@@ -98,12 +98,6 @@
+ #endif
+ .endm
+-#ifdef CONFIG_VM86
+-#define resume_userspace_sig  check_userspace
+-#else
+-#define resume_userspace_sig  resume_userspace
+-#endif
+-
+ /*
+  * User gs save/restore
+  *
+@@ -327,10 +321,19 @@ ret_from_exception:
+       preempt_stop(CLBR_ANY)
+ ret_from_intr:
+       GET_THREAD_INFO(%ebp)
+-check_userspace:
++resume_userspace_sig:
++#ifdef CONFIG_VM86
+       movl PT_EFLAGS(%esp), %eax      # mix EFLAGS and CS
+       movb PT_CS(%esp), %al
+       andl $(X86_EFLAGS_VM | SEGMENT_RPL_MASK), %eax
++#else
++      /*
++       * We can be coming here from a syscall done in the kernel space,
++       * e.g. a failed kernel_execve().
++       */
++      movl PT_CS(%esp), %eax
++      andl $SEGMENT_RPL_MASK, %eax
++#endif
+       cmpl $USER_RPL, %eax
+       jb resume_kernel                # not returning to v8086 or userspace
diff --git a/queue-3.3/x86-32-fix-typo-for-mq_getsetattr-in-syscall-table.patch b/queue-3.3/x86-32-fix-typo-for-mq_getsetattr-in-syscall-table.patch
new file mode 100644 (file)
index 0000000..74406bb
--- /dev/null
@@ -0,0 +1,34 @@
+From 13354dc412c36fe554f9904a92f1268c74af7e87 Mon Sep 17 00:00:00 2001
+From: Thierry Reding <thierry.reding@avionic-design.de>
+Date: Wed, 21 Mar 2012 22:50:08 +0100
+Subject: x86-32: Fix typo for mq_getsetattr in syscall table
+
+From: Thierry Reding <thierry.reding@avionic-design.de>
+
+commit 13354dc412c36fe554f9904a92f1268c74af7e87 upstream.
+
+Syscall 282 was mistakenly named mq_getsetaddr instead of mq_getsetattr.
+When building uClibc against the Linux kernel this would result in a
+shared library that doesn't provide the mq_getattr() and mq_setattr()
+functions.
+
+Signed-off-by: Thierry Reding <thierry.reding@avionic-design.de>
+Link: http://lkml.kernel.org/r/1332366608-2695-2-git-send-email-thierry.reding@avionic-design.de
+Signed-off-by: H. Peter Anvin <hpa@zytor.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ arch/x86/syscalls/syscall_32.tbl |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/arch/x86/syscalls/syscall_32.tbl
++++ b/arch/x86/syscalls/syscall_32.tbl
+@@ -288,7 +288,7 @@
+ 279   i386    mq_timedsend            sys_mq_timedsend                compat_sys_mq_timedsend
+ 280   i386    mq_timedreceive         sys_mq_timedreceive             compat_sys_mq_timedreceive
+ 281   i386    mq_notify               sys_mq_notify                   compat_sys_mq_notify
+-282   i386    mq_getsetaddr           sys_mq_getsetattr               compat_sys_mq_getsetattr
++282   i386    mq_getsetattr           sys_mq_getsetattr               compat_sys_mq_getsetattr
+ 283   i386    kexec_load              sys_kexec_load                  compat_sys_kexec_load
+ 284   i386    waitid                  sys_waitid                      compat_sys_waitid
+ # 285 sys_setaltroot