From: Greg Kroah-Hartman Date: Mon, 2 Dec 2013 17:50:31 +0000 (-0800) Subject: 3.10-stable patches X-Git-Tag: v3.4.72~5 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=16b1edb16307ef432eb79a30478a942172ff4823;p=thirdparty%2Fkernel%2Fstable-queue.git 3.10-stable patches added patches: drm-radeon-fix-n-cts-clock-matching-for-audio.patch drm-radeon-re-enable-sw-acr-support-on-pre-dce4.patch drm-radeon-use-64-bit-math-to-calculate-cts-values-for-audio-v2.patch drm-radeon-use-hw-generated-cts-n-values-for-audio.patch hid-apple-option-to-swap-the-option-alt-and-command-flag-keys.patch hid-enable-mayflash-usb-gamecube-adapter.patch hid-roccat-add-missing-special-driver-declarations.patch hid-roccat-add-new-device-return-value.patch hid-roccat-fix-coverity-cid-141438.patch iwl3945-better-skb-management-in-rx-path.patch iwl4965-better-skb-management-in-rx-path.patch iwlwifi-don-t-warn-on-host-commands-sent-when-firmware-is-dead.patch media-cx23885-fix-tevii-s471-regression-since-introduction-of-ts2020.patch netfilter-nf_conntrack-use-rcu-safe-kfree-for-conntrack-extensions.patch --- diff --git a/queue-3.10/drm-radeon-fix-n-cts-clock-matching-for-audio.patch b/queue-3.10/drm-radeon-fix-n-cts-clock-matching-for-audio.patch new file mode 100644 index 00000000000..3debcad5482 --- /dev/null +++ b/queue-3.10/drm-radeon-fix-n-cts-clock-matching-for-audio.patch @@ -0,0 +1,44 @@ +From e7d12c2f98ae1e68c7298e5028048d150fa553a1 Mon Sep 17 00:00:00 2001 +From: Alex Deucher +Date: Fri, 27 Sep 2013 18:19:42 -0400 +Subject: drm/radeon: fix N/CTS clock matching for audio + +From: Alex Deucher + +commit e7d12c2f98ae1e68c7298e5028048d150fa553a1 upstream. + +The drm code that calculates the 1001 clocks rounds up +rather than truncating. This allows the table to match +properly on those modes. + +See bug: +https://bugs.freedesktop.org/show_bug.cgi?id=69675 + +Signed-off-by: Alex Deucher +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/gpu/drm/radeon/r600_hdmi.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +--- a/drivers/gpu/drm/radeon/r600_hdmi.c ++++ b/drivers/gpu/drm/radeon/r600_hdmi.c +@@ -57,15 +57,15 @@ enum r600_hdmi_iec_status_bits { + static const struct radeon_hdmi_acr r600_hdmi_predefined_acr[] = { + /* 32kHz 44.1kHz 48kHz */ + /* Clock N CTS N CTS N CTS */ +- { 25174, 4576, 28125, 7007, 31250, 6864, 28125 }, /* 25,20/1.001 MHz */ ++ { 25175, 4576, 28125, 7007, 31250, 6864, 28125 }, /* 25,20/1.001 MHz */ + { 25200, 4096, 25200, 6272, 28000, 6144, 25200 }, /* 25.20 MHz */ + { 27000, 4096, 27000, 6272, 30000, 6144, 27000 }, /* 27.00 MHz */ + { 27027, 4096, 27027, 6272, 30030, 6144, 27027 }, /* 27.00*1.001 MHz */ + { 54000, 4096, 54000, 6272, 60000, 6144, 54000 }, /* 54.00 MHz */ + { 54054, 4096, 54054, 6272, 60060, 6144, 54054 }, /* 54.00*1.001 MHz */ +- { 74175, 11648, 210937, 17836, 234375, 11648, 140625 }, /* 74.25/1.001 MHz */ ++ { 74176, 11648, 210937, 17836, 234375, 11648, 140625 }, /* 74.25/1.001 MHz */ + { 74250, 4096, 74250, 6272, 82500, 6144, 74250 }, /* 74.25 MHz */ +- { 148351, 11648, 421875, 8918, 234375, 5824, 140625 }, /* 148.50/1.001 MHz */ ++ { 148352, 11648, 421875, 8918, 234375, 5824, 140625 }, /* 148.50/1.001 MHz */ + { 148500, 4096, 148500, 6272, 165000, 6144, 148500 }, /* 148.50 MHz */ + { 0, 4096, 0, 6272, 0, 6144, 0 } /* Other */ + }; diff --git a/queue-3.10/drm-radeon-re-enable-sw-acr-support-on-pre-dce4.patch b/queue-3.10/drm-radeon-re-enable-sw-acr-support-on-pre-dce4.patch new file mode 100644 index 00000000000..106a64f9b24 --- /dev/null +++ b/queue-3.10/drm-radeon-re-enable-sw-acr-support-on-pre-dce4.patch @@ -0,0 +1,30 @@ +From b852c985010a77c850b7548d64bbb964ca462b02 Mon Sep 17 00:00:00 2001 +From: Alex Deucher +Date: Thu, 10 Oct 2013 11:47:01 -0400 +Subject: drm/radeon: re-enable sw ACR support on pre-DCE4 + +From: Alex Deucher + +commit b852c985010a77c850b7548d64bbb964ca462b02 upstream. + +HW ACR support may have issues on some older chips, so +use SW ACR for now until we've tested further. + +Signed-off-by: Alex Deucher +CC: Rafał Miłecki +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/gpu/drm/radeon/r600_hdmi.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/drivers/gpu/drm/radeon/r600_hdmi.c ++++ b/drivers/gpu/drm/radeon/r600_hdmi.c +@@ -320,6 +320,7 @@ void r600_hdmi_setmode(struct drm_encode + } + + WREG32(HDMI0_ACR_PACKET_CONTROL + offset, ++ HDMI0_ACR_SOURCE | /* select SW CTS value - XXX verify that hw CTS works on all families */ + HDMI0_ACR_AUTO_SEND); /* allow hw to sent ACR packets when required */ + + WREG32(HDMI0_VBI_PACKET_CONTROL + offset, diff --git a/queue-3.10/drm-radeon-use-64-bit-math-to-calculate-cts-values-for-audio-v2.patch b/queue-3.10/drm-radeon-use-64-bit-math-to-calculate-cts-values-for-audio-v2.patch new file mode 100644 index 00000000000..9e57bf2505a --- /dev/null +++ b/queue-3.10/drm-radeon-use-64-bit-math-to-calculate-cts-values-for-audio-v2.patch @@ -0,0 +1,41 @@ +From 062c2e4363451d49ef840232fe65e8bff0dde2a5 Mon Sep 17 00:00:00 2001 +From: Alex Deucher +Date: Fri, 27 Sep 2013 18:09:54 -0400 +Subject: drm/radeon: use 64-bit math to calculate CTS values for audio (v2) + +From: Alex Deucher + +commit 062c2e4363451d49ef840232fe65e8bff0dde2a5 upstream. + +Avoid losing precision. See bug: +https://bugs.freedesktop.org/show_bug.cgi?id=69675 + +v2: fix math as per Anssi's comments. + +Signed-off-by: Alex Deucher +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/gpu/drm/radeon/r600_hdmi.c | 11 +++++++++-- + 1 file changed, 9 insertions(+), 2 deletions(-) + +--- a/drivers/gpu/drm/radeon/r600_hdmi.c ++++ b/drivers/gpu/drm/radeon/r600_hdmi.c +@@ -75,8 +75,15 @@ static const struct radeon_hdmi_acr r600 + */ + static void r600_hdmi_calc_cts(uint32_t clock, int *CTS, int N, int freq) + { +- if (*CTS == 0) +- *CTS = clock * N / (128 * freq) * 1000; ++ u64 n; ++ u32 d; ++ ++ if (*CTS == 0) { ++ n = (u64)clock * (u64)N * 1000ULL; ++ d = 128 * freq; ++ do_div(n, d); ++ *CTS = n; ++ } + DRM_DEBUG("Using ACR timing N=%d CTS=%d for frequency %d\n", + N, *CTS, freq); + } diff --git a/queue-3.10/drm-radeon-use-hw-generated-cts-n-values-for-audio.patch b/queue-3.10/drm-radeon-use-hw-generated-cts-n-values-for-audio.patch new file mode 100644 index 00000000000..c52f674f2f5 --- /dev/null +++ b/queue-3.10/drm-radeon-use-hw-generated-cts-n-values-for-audio.patch @@ -0,0 +1,49 @@ +From ee0fec312a1c4e26f255955da942562cd8908a4b Mon Sep 17 00:00:00 2001 +From: Alex Deucher +Date: Fri, 27 Sep 2013 18:22:15 -0400 +Subject: drm/radeon: use hw generated CTS/N values for audio + +From: Alex Deucher + +commit ee0fec312a1c4e26f255955da942562cd8908a4b upstream. + +Use the hw generated values rather than calculating +them in the driver. There may be some older r6xx +asics where this doesn't work correctly. This remains +to be seen. + +See bug: +https://bugs.freedesktop.org/show_bug.cgi?id=69675 + +Signed-off-by: Alex Deucher +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/gpu/drm/radeon/evergreen_hdmi.c | 3 +-- + drivers/gpu/drm/radeon/r600_hdmi.c | 3 +-- + 2 files changed, 2 insertions(+), 4 deletions(-) + +--- a/drivers/gpu/drm/radeon/evergreen_hdmi.c ++++ b/drivers/gpu/drm/radeon/evergreen_hdmi.c +@@ -219,8 +219,7 @@ void evergreen_hdmi_setmode(struct drm_e + /* fglrx clears sth in AFMT_AUDIO_PACKET_CONTROL2 here */ + + WREG32(HDMI_ACR_PACKET_CONTROL + offset, +- HDMI_ACR_AUTO_SEND | /* allow hw to sent ACR packets when required */ +- HDMI_ACR_SOURCE); /* select SW CTS value */ ++ HDMI_ACR_AUTO_SEND); /* allow hw to sent ACR packets when required */ + + evergreen_hdmi_update_ACR(encoder, mode->clock); + +--- a/drivers/gpu/drm/radeon/r600_hdmi.c ++++ b/drivers/gpu/drm/radeon/r600_hdmi.c +@@ -320,8 +320,7 @@ void r600_hdmi_setmode(struct drm_encode + } + + WREG32(HDMI0_ACR_PACKET_CONTROL + offset, +- HDMI0_ACR_AUTO_SEND | /* allow hw to sent ACR packets when required */ +- HDMI0_ACR_SOURCE); /* select SW CTS value */ ++ HDMI0_ACR_AUTO_SEND); /* allow hw to sent ACR packets when required */ + + WREG32(HDMI0_VBI_PACKET_CONTROL + offset, + HDMI0_NULL_SEND | /* send null packets when required */ diff --git a/queue-3.10/hid-apple-option-to-swap-the-option-alt-and-command-flag-keys.patch b/queue-3.10/hid-apple-option-to-swap-the-option-alt-and-command-flag-keys.patch new file mode 100644 index 00000000000..005dd29b71b --- /dev/null +++ b/queue-3.10/hid-apple-option-to-swap-the-option-alt-and-command-flag-keys.patch @@ -0,0 +1,68 @@ +From 43c831468b3d26dbe8f2e061ccaf1abaf9cc1b8b Mon Sep 17 00:00:00 2001 +From: Nanno Langstraat +Date: Mon, 14 Oct 2013 16:07:15 +0200 +Subject: HID: apple: option to swap the 'Option' ("Alt") and 'Command' ("Flag") keys. + +From: Nanno Langstraat + +commit 43c831468b3d26dbe8f2e061ccaf1abaf9cc1b8b upstream. + +Use case: people who use both Apple and PC keyboards regularly, and desire to +keep&use their PC muscle memory. + +A particular use case: an Apple compact external keyboard connected to a PC +laptop. (This use case can't be covered well by X.org key remappings etc.) + +Signed-off-by: Nanno Langstraat +Signed-off-by: Jiri Kosina +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/hid/hid-apple.c | 22 ++++++++++++++++++++++ + 1 file changed, 22 insertions(+) + +--- a/drivers/hid/hid-apple.c ++++ b/drivers/hid/hid-apple.c +@@ -46,6 +46,12 @@ module_param(iso_layout, uint, 0644); + MODULE_PARM_DESC(iso_layout, "Enable/Disable hardcoded ISO-layout of the keyboard. " + "(0 = disabled, [1] = enabled)"); + ++static unsigned int swap_opt_cmd = 0; ++module_param(swap_opt_cmd, uint, 0644); ++MODULE_PARM_DESC(swap_opt_cmd, "Swap the Option (\"Alt\") and Command (\"Flag\") keys. " ++ "(For people who want to keep Windows PC keyboard muscle memory. " ++ "[0] = as-is, Mac layout. 1 = swapped, Windows layout.)"); ++ + struct apple_sc { + unsigned long quirks; + unsigned int fn_on; +@@ -150,6 +156,14 @@ static const struct apple_key_translatio + { } + }; + ++static const struct apple_key_translation swapped_option_cmd_keys[] = { ++ { KEY_LEFTALT, KEY_LEFTMETA }, ++ { KEY_LEFTMETA, KEY_LEFTALT }, ++ { KEY_RIGHTALT, KEY_RIGHTMETA }, ++ { KEY_RIGHTMETA,KEY_RIGHTALT }, ++ { } ++}; ++ + static const struct apple_key_translation *apple_find_translation( + const struct apple_key_translation *table, u16 from) + { +@@ -242,6 +256,14 @@ static int hidinput_apple_event(struct h + } + } + ++ if (swap_opt_cmd) { ++ trans = apple_find_translation(swapped_option_cmd_keys, usage->code); ++ if (trans) { ++ input_event(input, usage->type, trans->to, value); ++ return 1; ++ } ++ } ++ + return 0; + } + diff --git a/queue-3.10/hid-enable-mayflash-usb-gamecube-adapter.patch b/queue-3.10/hid-enable-mayflash-usb-gamecube-adapter.patch new file mode 100644 index 00000000000..0eeaf493c84 --- /dev/null +++ b/queue-3.10/hid-enable-mayflash-usb-gamecube-adapter.patch @@ -0,0 +1,51 @@ +From e17f5d7667c5414b8f12a93ef14aae0824bd2beb Mon Sep 17 00:00:00 2001 +From: Tristan Rice +Date: Tue, 12 Nov 2013 19:06:23 +0100 +Subject: HID: enable Mayflash USB Gamecube Adapter + +From: Tristan Rice + +commit e17f5d7667c5414b8f12a93ef14aae0824bd2beb upstream. + +This is a patch that adds the new Mayflash Gamecube Controller to USB adapter +(ID 1a34:f705 ACRUX) to the ACRUX driver (drivers/hid/hid-axff.c) with full +force feedback support. + +Signed-off-by: Tristan Rice +Signed-off-by: Jiri Kosina +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/hid/hid-axff.c | 3 ++- + drivers/hid/hid-core.c | 1 + + 2 files changed, 3 insertions(+), 1 deletion(-) + +--- a/drivers/hid/hid-axff.c ++++ b/drivers/hid/hid-axff.c +@@ -95,7 +95,7 @@ static int axff_init(struct hid_device * + } + } + +- if (field_count < 4) { ++ if (field_count < 4 && hid->product != 0xf705) { + hid_err(hid, "not enough fields in the report: %d\n", + field_count); + return -ENODEV; +@@ -180,6 +180,7 @@ static void ax_remove(struct hid_device + + static const struct hid_device_id ax_devices[] = { + { HID_USB_DEVICE(USB_VENDOR_ID_ACRUX, 0x0802), }, ++ { HID_USB_DEVICE(USB_VENDOR_ID_ACRUX, 0xf705), }, + { } + }; + MODULE_DEVICE_TABLE(hid, ax_devices); +--- a/drivers/hid/hid-core.c ++++ b/drivers/hid/hid-core.c +@@ -1562,6 +1562,7 @@ static const struct hid_device_id hid_ha + { HID_USB_DEVICE(USB_VENDOR_ID_A4TECH, USB_DEVICE_ID_A4TECH_X5_005D) }, + { HID_USB_DEVICE(USB_VENDOR_ID_A4TECH, USB_DEVICE_ID_A4TECH_RP_649) }, + { HID_USB_DEVICE(USB_VENDOR_ID_ACRUX, 0x0802) }, ++ { HID_USB_DEVICE(USB_VENDOR_ID_ACRUX, 0xf705) }, + { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_MIGHTYMOUSE) }, + { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_MAGICMOUSE) }, + { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_MAGICTRACKPAD) }, diff --git a/queue-3.10/hid-roccat-add-missing-special-driver-declarations.patch b/queue-3.10/hid-roccat-add-missing-special-driver-declarations.patch new file mode 100644 index 00000000000..60f0c171825 --- /dev/null +++ b/queue-3.10/hid-roccat-add-missing-special-driver-declarations.patch @@ -0,0 +1,37 @@ +From e078809df5611600965f4d3420c3256260fc3e3d Mon Sep 17 00:00:00 2001 +From: Stefan Achatz +Date: Fri, 8 Nov 2013 14:12:00 +0100 +Subject: HID: roccat: add missing special driver declarations + +From: Stefan Achatz + +commit e078809df5611600965f4d3420c3256260fc3e3d upstream. + +Forgot two special driver declarations and sorted the list. + +Signed-off-by: Stefan Achatz +Signed-off-by: Jiri Kosina +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/hid/hid-core.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +--- a/drivers/hid/hid-core.c ++++ b/drivers/hid/hid-core.c +@@ -1751,12 +1751,14 @@ static const struct hid_device_id hid_ha + { HID_USB_DEVICE(USB_VENDOR_ID_PETALYNX, USB_DEVICE_ID_PETALYNX_MAXTER_REMOTE) }, + { HID_USB_DEVICE(USB_VENDOR_ID_PRIMAX, USB_DEVICE_ID_PRIMAX_KEYBOARD) }, + #if IS_ENABLED(CONFIG_HID_ROCCAT) +- { HID_USB_DEVICE(USB_VENDOR_ID_ROCCAT, USB_DEVICE_ID_ROCCAT_KONE) }, + { HID_USB_DEVICE(USB_VENDOR_ID_ROCCAT, USB_DEVICE_ID_ROCCAT_ARVO) }, + { HID_USB_DEVICE(USB_VENDOR_ID_ROCCAT, USB_DEVICE_ID_ROCCAT_ISKU) }, ++ { HID_USB_DEVICE(USB_VENDOR_ID_ROCCAT, USB_DEVICE_ID_ROCCAT_ISKUFX) }, ++ { HID_USB_DEVICE(USB_VENDOR_ID_ROCCAT, USB_DEVICE_ID_ROCCAT_KONE) }, + { HID_USB_DEVICE(USB_VENDOR_ID_ROCCAT, USB_DEVICE_ID_ROCCAT_KONEPLUS) }, + { HID_USB_DEVICE(USB_VENDOR_ID_ROCCAT, USB_DEVICE_ID_ROCCAT_KONEPURE) }, + { HID_USB_DEVICE(USB_VENDOR_ID_ROCCAT, USB_DEVICE_ID_ROCCAT_KONEPURE_OPTICAL) }, ++ { HID_USB_DEVICE(USB_VENDOR_ID_ROCCAT, USB_DEVICE_ID_ROCCAT_KONEXTD) }, + { HID_USB_DEVICE(USB_VENDOR_ID_ROCCAT, USB_DEVICE_ID_ROCCAT_KOVAPLUS) }, + { HID_USB_DEVICE(USB_VENDOR_ID_ROCCAT, USB_DEVICE_ID_ROCCAT_LUA) }, + { HID_USB_DEVICE(USB_VENDOR_ID_ROCCAT, USB_DEVICE_ID_ROCCAT_PYRA_WIRED) }, diff --git a/queue-3.10/hid-roccat-add-new-device-return-value.patch b/queue-3.10/hid-roccat-add-new-device-return-value.patch new file mode 100644 index 00000000000..5f0f1ea5e04 --- /dev/null +++ b/queue-3.10/hid-roccat-add-new-device-return-value.patch @@ -0,0 +1,53 @@ +From 14fc4290df2fb94a28f39dab9ed32feaa5527bef Mon Sep 17 00:00:00 2001 +From: Stefan Achatz +Date: Mon, 28 Oct 2013 18:52:03 +0100 +Subject: HID: roccat: add new device return value + +From: Stefan Achatz + +commit 14fc4290df2fb94a28f39dab9ed32feaa5527bef upstream. + +Ryos uses a new return value for critical errors, others have been +confirmed. + +Signed-off-by: Stefan Achatz +Signed-off-by: Jiri Kosina +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/hid/hid-roccat-common.c | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +--- a/drivers/hid/hid-roccat-common.c ++++ b/drivers/hid/hid-roccat-common.c +@@ -65,10 +65,11 @@ int roccat_common2_send(struct usb_devic + EXPORT_SYMBOL_GPL(roccat_common2_send); + + enum roccat_common2_control_states { +- ROCCAT_COMMON_CONTROL_STATUS_OVERLOAD = 0, ++ ROCCAT_COMMON_CONTROL_STATUS_CRITICAL = 0, + ROCCAT_COMMON_CONTROL_STATUS_OK = 1, + ROCCAT_COMMON_CONTROL_STATUS_INVALID = 2, +- ROCCAT_COMMON_CONTROL_STATUS_WAIT = 3, ++ ROCCAT_COMMON_CONTROL_STATUS_BUSY = 3, ++ ROCCAT_COMMON_CONTROL_STATUS_CRITICAL_NEW = 4, + }; + + static int roccat_common2_receive_control_status(struct usb_device *usb_dev) +@@ -88,13 +89,12 @@ static int roccat_common2_receive_contro + switch (control.value) { + case ROCCAT_COMMON_CONTROL_STATUS_OK: + return 0; +- case ROCCAT_COMMON_CONTROL_STATUS_WAIT: ++ case ROCCAT_COMMON_CONTROL_STATUS_BUSY: + msleep(500); + continue; + case ROCCAT_COMMON_CONTROL_STATUS_INVALID: +- +- case ROCCAT_COMMON_CONTROL_STATUS_OVERLOAD: +- /* seems to be critical - replug necessary */ ++ case ROCCAT_COMMON_CONTROL_STATUS_CRITICAL: ++ case ROCCAT_COMMON_CONTROL_STATUS_CRITICAL_NEW: + return -EINVAL; + default: + dev_err(&usb_dev->dev, diff --git a/queue-3.10/hid-roccat-fix-coverity-cid-141438.patch b/queue-3.10/hid-roccat-fix-coverity-cid-141438.patch new file mode 100644 index 00000000000..928837d70f6 --- /dev/null +++ b/queue-3.10/hid-roccat-fix-coverity-cid-141438.patch @@ -0,0 +1,35 @@ +From 7be63f20b00840a6f1c718dcee00855688d64acd Mon Sep 17 00:00:00 2001 +From: Stefan Achatz +Date: Sun, 3 Nov 2013 06:25:33 +0100 +Subject: HID: roccat: fix Coverity CID 141438 + +From: Stefan Achatz + +commit 7be63f20b00840a6f1c718dcee00855688d64acd upstream. + +Add missing switch breaks. + +Signed-off-by: Stefan Achatz +Signed-off-by: Jiri Kosina +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/hid/hid-roccat-kovaplus.c | 4 ++++ + 1 file changed, 4 insertions(+) + +--- a/drivers/hid/hid-roccat-kovaplus.c ++++ b/drivers/hid/hid-roccat-kovaplus.c +@@ -577,9 +577,13 @@ static void kovaplus_keep_values_up_to_d + break; + case KOVAPLUS_MOUSE_REPORT_BUTTON_TYPE_CPI: + kovaplus->actual_cpi = kovaplus_convert_event_cpi(button_report->data1); ++ break; + case KOVAPLUS_MOUSE_REPORT_BUTTON_TYPE_SENSITIVITY: + kovaplus->actual_x_sensitivity = button_report->data1; + kovaplus->actual_y_sensitivity = button_report->data2; ++ break; ++ default: ++ break; + } + } + diff --git a/queue-3.10/iwl3945-better-skb-management-in-rx-path.patch b/queue-3.10/iwl3945-better-skb-management-in-rx-path.patch new file mode 100644 index 00000000000..33a54a765c9 --- /dev/null +++ b/queue-3.10/iwl3945-better-skb-management-in-rx-path.patch @@ -0,0 +1,101 @@ +From 45fe142cefa864b685615bcb930159f6749c3667 Mon Sep 17 00:00:00 2001 +From: Eric Dumazet +Date: Fri, 28 Jun 2013 08:05:06 -0700 +Subject: iwl3945: better skb management in rx path + +From: Eric Dumazet + +commit 45fe142cefa864b685615bcb930159f6749c3667 upstream. + +Steinar reported reallocations of skb->head with IPv6, leading to +a warning in skb_try_coalesce() + +It turns out iwl3945 has several problems : + +1) skb->truesize is underestimated. + We really consume PAGE_SIZE bytes for a fragment, + not the frame length. +2) 128 bytes of initial headroom is a bit low and forces reallocations. +3) We can avoid consuming a full page for small enough frames. + +Reported-by: Steinar H. Gunderson +Signed-off-by: Eric Dumazet +Cc: Paul Stewart +Acked-by: Stanislaw Gruszka +Signed-off-by: John W. Linville +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/net/wireless/iwlegacy/3945.c | 31 +++++++++++++++++++------------ + 1 file changed, 19 insertions(+), 12 deletions(-) + +--- a/drivers/net/wireless/iwlegacy/3945.c ++++ b/drivers/net/wireless/iwlegacy/3945.c +@@ -462,6 +462,8 @@ il3945_is_network_packet(struct il_priv + } + } + ++#define SMALL_PACKET_SIZE 256 ++ + static void + il3945_pass_packet_to_mac80211(struct il_priv *il, struct il_rx_buf *rxb, + struct ieee80211_rx_status *stats) +@@ -470,14 +472,13 @@ il3945_pass_packet_to_mac80211(struct il + struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)IL_RX_DATA(pkt); + struct il3945_rx_frame_hdr *rx_hdr = IL_RX_HDR(pkt); + struct il3945_rx_frame_end *rx_end = IL_RX_END(pkt); +- u16 len = le16_to_cpu(rx_hdr->len); ++ u32 len = le16_to_cpu(rx_hdr->len); + struct sk_buff *skb; + __le16 fc = hdr->frame_control; ++ u32 fraglen = PAGE_SIZE << il->hw_params.rx_page_order; + + /* We received data from the HW, so stop the watchdog */ +- if (unlikely +- (len + IL39_RX_FRAME_SIZE > +- PAGE_SIZE << il->hw_params.rx_page_order)) { ++ if (unlikely(len + IL39_RX_FRAME_SIZE > fraglen)) { + D_DROP("Corruption detected!\n"); + return; + } +@@ -488,26 +489,32 @@ il3945_pass_packet_to_mac80211(struct il + return; + } + +- skb = dev_alloc_skb(128); ++ skb = dev_alloc_skb(SMALL_PACKET_SIZE); + if (!skb) { + IL_ERR("dev_alloc_skb failed\n"); + return; + } + + if (!il3945_mod_params.sw_crypto) +- il_set_decrypted_flag(il, (struct ieee80211_hdr *)rxb_addr(rxb), ++ il_set_decrypted_flag(il, (struct ieee80211_hdr *)pkt, + le32_to_cpu(rx_end->status), stats); + +- skb_add_rx_frag(skb, 0, rxb->page, +- (void *)rx_hdr->payload - (void *)pkt, len, +- len); +- ++ /* If frame is small enough to fit into skb->head, copy it ++ * and do not consume a full page ++ */ ++ if (len <= SMALL_PACKET_SIZE) { ++ memcpy(skb_put(skb, len), rx_hdr->payload, len); ++ } else { ++ skb_add_rx_frag(skb, 0, rxb->page, ++ (void *)rx_hdr->payload - (void *)pkt, len, ++ fraglen); ++ il->alloc_rxb_page--; ++ rxb->page = NULL; ++ } + il_update_stats(il, false, fc, len); + memcpy(IEEE80211_SKB_RXCB(skb), stats, sizeof(*stats)); + + ieee80211_rx(il->hw, skb); +- il->alloc_rxb_page--; +- rxb->page = NULL; + } + + #define IL_DELAY_NEXT_SCAN_AFTER_ASSOC (HZ*6) diff --git a/queue-3.10/iwl4965-better-skb-management-in-rx-path.patch b/queue-3.10/iwl4965-better-skb-management-in-rx-path.patch new file mode 100644 index 00000000000..169be27a326 --- /dev/null +++ b/queue-3.10/iwl4965-better-skb-management-in-rx-path.patch @@ -0,0 +1,73 @@ +From c1de4a9557d9e25e41fc4ba034b9659152205539 Mon Sep 17 00:00:00 2001 +From: Stanislaw Gruszka +Date: Mon, 1 Jul 2013 14:19:30 +0200 +Subject: iwl4965: better skb management in rx path + +From: Stanislaw Gruszka + +commit c1de4a9557d9e25e41fc4ba034b9659152205539 upstream. + +4965 version of Eric patch "iwl3945: better skb management in rx path". +It fixes several problems : + +1) skb->truesize is underestimated. + We really consume PAGE_SIZE bytes for a fragment, + not the frame length. +2) 128 bytes of initial headroom is a bit low and forces reallocations. +3) We can avoid consuming a full page for small enough frames. + +Signed-off-by: Stanislaw Gruszka +Acked-by: Eric Dumazet +Signed-off-by: John W. Linville +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/net/wireless/iwlegacy/4965-mac.c | 18 ++++++++++++------ + 1 file changed, 12 insertions(+), 6 deletions(-) + +--- a/drivers/net/wireless/iwlegacy/4965-mac.c ++++ b/drivers/net/wireless/iwlegacy/4965-mac.c +@@ -574,9 +574,11 @@ il4965_translate_rx_status(struct il_pri + return decrypt_out; + } + ++#define SMALL_PACKET_SIZE 256 ++ + static void + il4965_pass_packet_to_mac80211(struct il_priv *il, struct ieee80211_hdr *hdr, +- u16 len, u32 ampdu_status, struct il_rx_buf *rxb, ++ u32 len, u32 ampdu_status, struct il_rx_buf *rxb, + struct ieee80211_rx_status *stats) + { + struct sk_buff *skb; +@@ -593,21 +595,25 @@ il4965_pass_packet_to_mac80211(struct il + il_set_decrypted_flag(il, hdr, ampdu_status, stats)) + return; + +- skb = dev_alloc_skb(128); ++ skb = dev_alloc_skb(SMALL_PACKET_SIZE); + if (!skb) { + IL_ERR("dev_alloc_skb failed\n"); + return; + } + +- skb_add_rx_frag(skb, 0, rxb->page, (void *)hdr - rxb_addr(rxb), len, +- len); ++ if (len <= SMALL_PACKET_SIZE) { ++ memcpy(skb_put(skb, len), hdr, len); ++ } else { ++ skb_add_rx_frag(skb, 0, rxb->page, (void *)hdr - rxb_addr(rxb), ++ len, PAGE_SIZE << il->hw_params.rx_page_order); ++ il->alloc_rxb_page--; ++ rxb->page = NULL; ++ } + + il_update_stats(il, false, fc, len); + memcpy(IEEE80211_SKB_RXCB(skb), stats, sizeof(*stats)); + + ieee80211_rx(il->hw, skb); +- il->alloc_rxb_page--; +- rxb->page = NULL; + } + + /* Called for N_RX (legacy ABG frames), or diff --git a/queue-3.10/iwlwifi-don-t-warn-on-host-commands-sent-when-firmware-is-dead.patch b/queue-3.10/iwlwifi-don-t-warn-on-host-commands-sent-when-firmware-is-dead.patch new file mode 100644 index 00000000000..6558bac47d8 --- /dev/null +++ b/queue-3.10/iwlwifi-don-t-warn-on-host-commands-sent-when-firmware-is-dead.patch @@ -0,0 +1,36 @@ +From 8ca95995e64f5d270889badb3e449dca91106a2b Mon Sep 17 00:00:00 2001 +From: Emmanuel Grumbach +Date: Sun, 15 Sep 2013 11:37:17 +0300 +Subject: iwlwifi: don't WARN on host commands sent when firmware is dead + +From: Emmanuel Grumbach + +commit 8ca95995e64f5d270889badb3e449dca91106a2b upstream. + +This triggers automatic bug reports and add no valuable +information. Print a simple error instead and drop the +host command. + +Signed-off-by: Emmanuel Grumbach +Signed-off-by: Johannes Berg +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/net/wireless/iwlwifi/iwl-trans.h | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +--- a/drivers/net/wireless/iwlwifi/iwl-trans.h ++++ b/drivers/net/wireless/iwlwifi/iwl-trans.h +@@ -605,8 +605,10 @@ static inline int iwl_trans_send_cmd(str + { + int ret; + +- WARN_ONCE(trans->state != IWL_TRANS_FW_ALIVE, +- "%s bad state = %d", __func__, trans->state); ++ if (trans->state != IWL_TRANS_FW_ALIVE) { ++ IWL_ERR(trans, "%s bad state = %d", __func__, trans->state); ++ return -EIO; ++ } + + if (!(cmd->flags & CMD_ASYNC)) + lock_map_acquire_read(&trans->sync_cmd_lockdep_map); diff --git a/queue-3.10/media-cx23885-fix-tevii-s471-regression-since-introduction-of-ts2020.patch b/queue-3.10/media-cx23885-fix-tevii-s471-regression-since-introduction-of-ts2020.patch new file mode 100644 index 00000000000..a70fe6b7e86 --- /dev/null +++ b/queue-3.10/media-cx23885-fix-tevii-s471-regression-since-introduction-of-ts2020.patch @@ -0,0 +1,33 @@ +From b43ea8068d2090cb1e44632c8a938ab40d2c7419 Mon Sep 17 00:00:00 2001 +From: Johannes Koch +Date: Wed, 17 Jul 2013 14:28:16 -0300 +Subject: media: cx23885: Fix TeVii S471 regression since introduction of ts2020 + +From: Johannes Koch + +commit b43ea8068d2090cb1e44632c8a938ab40d2c7419 upstream. + +Patch to make TeVii S471 cards use the ts2020 tuner, since ds3000 driver no +longer contains tuning code. + +Signed-off-by: Johannes Koch +Signed-off-by: Mauro Carvalho Chehab +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/media/pci/cx23885/cx23885-dvb.c | 4 ++++ + 1 file changed, 4 insertions(+) + +--- a/drivers/media/pci/cx23885/cx23885-dvb.c ++++ b/drivers/media/pci/cx23885/cx23885-dvb.c +@@ -1249,6 +1249,10 @@ static int dvb_register(struct cx23885_t + fe0->dvb.frontend = dvb_attach(ds3000_attach, + &tevii_ds3000_config, + &i2c_bus->i2c_adap); ++ if (fe0->dvb.frontend != NULL) { ++ dvb_attach(ts2020_attach, fe0->dvb.frontend, ++ &tevii_ts2020_config, &i2c_bus->i2c_adap); ++ } + break; + case CX23885_BOARD_PROF_8000: + i2c_bus = &dev->i2c_bus[0]; diff --git a/queue-3.10/netfilter-nf_conntrack-use-rcu-safe-kfree-for-conntrack-extensions.patch b/queue-3.10/netfilter-nf_conntrack-use-rcu-safe-kfree-for-conntrack-extensions.patch new file mode 100644 index 00000000000..1fa09963c8d --- /dev/null +++ b/queue-3.10/netfilter-nf_conntrack-use-rcu-safe-kfree-for-conntrack-extensions.patch @@ -0,0 +1,35 @@ +From c13a84a830a208fb3443628773c8ca0557773cc7 Mon Sep 17 00:00:00 2001 +From: Michal Kubecek +Date: Wed, 11 Sep 2013 10:17:27 +0200 +Subject: netfilter: nf_conntrack: use RCU safe kfree for conntrack extensions + +From: Michal Kubecek + +commit c13a84a830a208fb3443628773c8ca0557773cc7 upstream. + +Commit 68b80f11 (netfilter: nf_nat: fix RCU races) introduced +RCU protection for freeing extension data when reallocation +moves them to a new location. We need the same protection when +freeing them in nf_ct_ext_free() in order to prevent a +use-after-free by other threads referencing a NAT extension data +via bysource list. + +Signed-off-by: Michal Kubecek +Signed-off-by: Pablo Neira Ayuso +Signed-off-by: Greg Kroah-Hartman + +--- + include/net/netfilter/nf_conntrack_extend.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/include/net/netfilter/nf_conntrack_extend.h ++++ b/include/net/netfilter/nf_conntrack_extend.h +@@ -80,7 +80,7 @@ static inline void nf_ct_ext_destroy(str + static inline void nf_ct_ext_free(struct nf_conn *ct) + { + if (ct->ext) +- kfree(ct->ext); ++ kfree_rcu(ct->ext, rcu); + } + + /* Add this type, returns pointer to data or NULL. */ diff --git a/queue-3.10/series b/queue-3.10/series index 69e47b1cdf1..92f8e3a5616 100644 --- a/queue-3.10/series +++ b/queue-3.10/series @@ -156,3 +156,17 @@ media-dvb-frontends-don-t-use-dynamic-static-allocation.patch media-dvb-frontends-again-don-t-use-dynamic-static-allocation.patch media-s5h1420-don-t-use-dynamic-static-allocation.patch x.509-remove-certificate-date-checks.patch +hid-roccat-add-new-device-return-value.patch +hid-roccat-fix-coverity-cid-141438.patch +hid-roccat-add-missing-special-driver-declarations.patch +hid-enable-mayflash-usb-gamecube-adapter.patch +hid-apple-option-to-swap-the-option-alt-and-command-flag-keys.patch +drm-radeon-use-64-bit-math-to-calculate-cts-values-for-audio-v2.patch +drm-radeon-fix-n-cts-clock-matching-for-audio.patch +drm-radeon-use-hw-generated-cts-n-values-for-audio.patch +drm-radeon-re-enable-sw-acr-support-on-pre-dce4.patch +iwlwifi-don-t-warn-on-host-commands-sent-when-firmware-is-dead.patch +netfilter-nf_conntrack-use-rcu-safe-kfree-for-conntrack-extensions.patch +media-cx23885-fix-tevii-s471-regression-since-introduction-of-ts2020.patch +iwl3945-better-skb-management-in-rx-path.patch +iwl4965-better-skb-management-in-rx-path.patch