diff --git a/debian/changelog b/debian/changelog index 86a4252db..34e060ffe 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,7 @@ -linux (3.7.1-1~experimental.3) UNRELEASED; urgency=low +linux (3.7.2-1~experimental.1) UNRELEASED; urgency=low + + * New upstream stable update: + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.7.2 [ Ben Hutchings ] * [ia64] nouveau: Disable another bit of ACPI support (fixes FTBFS) diff --git a/debian/patches/bugfix/all/ALSA-usb-audio-Avoid-autopm-calls-after-disconnectio.patch b/debian/patches/bugfix/all/ALSA-usb-audio-Avoid-autopm-calls-after-disconnectio.patch deleted file mode 100644 index 25c18643b..000000000 --- a/debian/patches/bugfix/all/ALSA-usb-audio-Avoid-autopm-calls-after-disconnectio.patch +++ /dev/null @@ -1,101 +0,0 @@ -From: Takashi Iwai -Date: Mon, 3 Dec 2012 11:12:46 +0100 -Subject: [1/2] ALSA: usb-audio: Avoid autopm calls after disconnection - -commit 59866da9e4ae54819e3c4e0a8f426bdb0c2ef993 upstream. - -Add a similar protection against the disconnection race and the -invalid use of usb instance after disconnection, as well as we've done -for the USB audio PCM. - -Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=51201 - -Reviewd-by: Clemens Ladisch -Tested-by: Clemens Ladisch -Signed-off-by: Takashi Iwai ---- - sound/usb/midi.c | 23 ++++++++++++++++++++++- - 1 file changed, 22 insertions(+), 1 deletion(-) - -diff --git a/sound/usb/midi.c b/sound/usb/midi.c -index eeefbce..c0054ee 100644 ---- a/sound/usb/midi.c -+++ b/sound/usb/midi.c -@@ -116,6 +116,7 @@ struct snd_usb_midi { - struct list_head list; - struct timer_list error_timer; - spinlock_t disc_lock; -+ struct rw_semaphore disc_rwsem; - struct mutex mutex; - u32 usb_id; - int next_midi_device; -@@ -1038,6 +1039,12 @@ static void substream_open(struct snd_rawmidi_substream *substream, int open) - struct snd_usb_midi* umidi = substream->rmidi->private_data; - struct snd_kcontrol *ctl; - -+ down_read(&umidi->disc_rwsem); -+ if (umidi->disconnected) { -+ up_read(&umidi->disc_rwsem); -+ return; -+ } -+ - mutex_lock(&umidi->mutex); - if (open) { - if (umidi->opened++ == 0 && umidi->roland_load_ctl) { -@@ -1056,6 +1063,7 @@ static void substream_open(struct snd_rawmidi_substream *substream, int open) - } - } - mutex_unlock(&umidi->mutex); -+ up_read(&umidi->disc_rwsem); - } - - static int snd_usbmidi_output_open(struct snd_rawmidi_substream *substream) -@@ -1076,8 +1084,15 @@ static int snd_usbmidi_output_open(struct snd_rawmidi_substream *substream) - snd_BUG(); - return -ENXIO; - } -+ -+ down_read(&umidi->disc_rwsem); -+ if (umidi->disconnected) { -+ up_read(&umidi->disc_rwsem); -+ return -ENODEV; -+ } - err = usb_autopm_get_interface(umidi->iface); - port->autopm_reference = err >= 0; -+ up_read(&umidi->disc_rwsem); - if (err < 0 && err != -EACCES) - return -EIO; - substream->runtime->private_data = port; -@@ -1092,8 +1107,10 @@ static int snd_usbmidi_output_close(struct snd_rawmidi_substream *substream) - struct usbmidi_out_port *port = substream->runtime->private_data; - - substream_open(substream, 0); -- if (port->autopm_reference) -+ down_read(&umidi->disc_rwsem); -+ if (!umidi->disconnected && port->autopm_reference) - usb_autopm_put_interface(umidi->iface); -+ up_read(&umidi->disc_rwsem); - return 0; - } - -@@ -1403,9 +1420,12 @@ void snd_usbmidi_disconnect(struct list_head* p) - * a timer may submit an URB. To reliably break the cycle - * a flag under lock must be used - */ -+ down_write(&umidi->disc_rwsem); - spin_lock_irq(&umidi->disc_lock); - umidi->disconnected = 1; - spin_unlock_irq(&umidi->disc_lock); -+ up_write(&umidi->disc_rwsem); -+ - for (i = 0; i < MIDI_MAX_ENDPOINTS; ++i) { - struct snd_usb_midi_endpoint* ep = &umidi->endpoints[i]; - if (ep->out) -@@ -2117,6 +2137,7 @@ int snd_usbmidi_create(struct snd_card *card, - umidi->usb_protocol_ops = &snd_usbmidi_standard_ops; - init_timer(&umidi->error_timer); - spin_lock_init(&umidi->disc_lock); -+ init_rwsem(&umidi->disc_rwsem); - mutex_init(&umidi->mutex); - umidi->usb_id = USB_ID(le16_to_cpu(umidi->dev->descriptor.idVendor), - le16_to_cpu(umidi->dev->descriptor.idProduct)); diff --git a/debian/patches/bugfix/all/ALSA-usb-audio-Fix-missing-autopm-for-MIDI-input.patch b/debian/patches/bugfix/all/ALSA-usb-audio-Fix-missing-autopm-for-MIDI-input.patch deleted file mode 100644 index e4af374c8..000000000 --- a/debian/patches/bugfix/all/ALSA-usb-audio-Fix-missing-autopm-for-MIDI-input.patch +++ /dev/null @@ -1,217 +0,0 @@ -From: Takashi Iwai -Date: Mon, 3 Dec 2012 11:30:50 +0100 -Subject: [2/2] ALSA: usb-audio: Fix missing autopm for MIDI input - -commit f5f165418cabf2218eb466c0e94693b8b1aee88b upstream. - -The commit [88a8516a: ALSA: usbaudio: implement USB autosuspend] added -the support of autopm for USB MIDI output, but it didn't take the MIDI -input into account. - -This patch adds the following for fixing the autopm: -- Manage the URB start at the first MIDI input stream open, instead of - the time of instance creation -- Move autopm code to the common substream_open() -- Make snd_usbmidi_input_start/_stop() more robust and add the running - state check - -Reviewd-by: Clemens Ladisch -Tested-by: Clemens Ladisch -Signed-off-by: Takashi Iwai ---- - sound/usb/midi.c | 88 ++++++++++++++++++++++++++++-------------------------- - 1 file changed, 46 insertions(+), 42 deletions(-) - -diff --git a/sound/usb/midi.c b/sound/usb/midi.c -index c0054ee..34b9bb7 100644 ---- a/sound/usb/midi.c -+++ b/sound/usb/midi.c -@@ -126,8 +126,10 @@ struct snd_usb_midi { - struct snd_usb_midi_in_endpoint *in; - } endpoints[MIDI_MAX_ENDPOINTS]; - unsigned long input_triggered; -- unsigned int opened; -+ bool autopm_reference; -+ unsigned int opened[2]; - unsigned char disconnected; -+ unsigned char input_running; - - struct snd_kcontrol *roland_load_ctl; - }; -@@ -149,7 +151,6 @@ struct snd_usb_midi_out_endpoint { - struct snd_usb_midi_out_endpoint* ep; - struct snd_rawmidi_substream *substream; - int active; -- bool autopm_reference; - uint8_t cable; /* cable number << 4 */ - uint8_t state; - #define STATE_UNKNOWN 0 -@@ -1034,36 +1035,58 @@ static void update_roland_altsetting(struct snd_usb_midi* umidi) - snd_usbmidi_input_start(&umidi->list); - } - --static void substream_open(struct snd_rawmidi_substream *substream, int open) -+static int substream_open(struct snd_rawmidi_substream *substream, int dir, -+ int open) - { - struct snd_usb_midi* umidi = substream->rmidi->private_data; - struct snd_kcontrol *ctl; -+ int err; - - down_read(&umidi->disc_rwsem); - if (umidi->disconnected) { - up_read(&umidi->disc_rwsem); -- return; -+ return open ? -ENODEV : 0; - } - - mutex_lock(&umidi->mutex); - if (open) { -- if (umidi->opened++ == 0 && umidi->roland_load_ctl) { -- ctl = umidi->roland_load_ctl; -- ctl->vd[0].access |= SNDRV_CTL_ELEM_ACCESS_INACTIVE; -- snd_ctl_notify(umidi->card, -+ if (!umidi->opened[0] && !umidi->opened[1]) { -+ err = usb_autopm_get_interface(umidi->iface); -+ umidi->autopm_reference = err >= 0; -+ if (err < 0 && err != -EACCES) { -+ mutex_unlock(&umidi->mutex); -+ up_read(&umidi->disc_rwsem); -+ return -EIO; -+ } -+ if (umidi->roland_load_ctl) { -+ ctl = umidi->roland_load_ctl; -+ ctl->vd[0].access |= SNDRV_CTL_ELEM_ACCESS_INACTIVE; -+ snd_ctl_notify(umidi->card, - SNDRV_CTL_EVENT_MASK_INFO, &ctl->id); -- update_roland_altsetting(umidi); -+ update_roland_altsetting(umidi); -+ } - } -+ umidi->opened[dir]++; -+ if (umidi->opened[1]) -+ snd_usbmidi_input_start(&umidi->list); - } else { -- if (--umidi->opened == 0 && umidi->roland_load_ctl) { -- ctl = umidi->roland_load_ctl; -- ctl->vd[0].access &= ~SNDRV_CTL_ELEM_ACCESS_INACTIVE; -- snd_ctl_notify(umidi->card, -+ umidi->opened[dir]--; -+ if (!umidi->opened[1]) -+ snd_usbmidi_input_stop(&umidi->list); -+ if (!umidi->opened[0] && !umidi->opened[1]) { -+ if (umidi->roland_load_ctl) { -+ ctl = umidi->roland_load_ctl; -+ ctl->vd[0].access &= ~SNDRV_CTL_ELEM_ACCESS_INACTIVE; -+ snd_ctl_notify(umidi->card, - SNDRV_CTL_EVENT_MASK_INFO, &ctl->id); -+ } -+ if (umidi->autopm_reference) -+ usb_autopm_put_interface(umidi->iface); - } - } - mutex_unlock(&umidi->mutex); - up_read(&umidi->disc_rwsem); -+ return 0; - } - - static int snd_usbmidi_output_open(struct snd_rawmidi_substream *substream) -@@ -1071,7 +1094,6 @@ static int snd_usbmidi_output_open(struct snd_rawmidi_substream *substream) - struct snd_usb_midi* umidi = substream->rmidi->private_data; - struct usbmidi_out_port* port = NULL; - int i, j; -- int err; - - for (i = 0; i < MIDI_MAX_ENDPOINTS; ++i) - if (umidi->endpoints[i].out) -@@ -1085,33 +1107,14 @@ static int snd_usbmidi_output_open(struct snd_rawmidi_substream *substream) - return -ENXIO; - } - -- down_read(&umidi->disc_rwsem); -- if (umidi->disconnected) { -- up_read(&umidi->disc_rwsem); -- return -ENODEV; -- } -- err = usb_autopm_get_interface(umidi->iface); -- port->autopm_reference = err >= 0; -- up_read(&umidi->disc_rwsem); -- if (err < 0 && err != -EACCES) -- return -EIO; - substream->runtime->private_data = port; - port->state = STATE_UNKNOWN; -- substream_open(substream, 1); -- return 0; -+ return substream_open(substream, 0, 1); - } - - static int snd_usbmidi_output_close(struct snd_rawmidi_substream *substream) - { -- struct snd_usb_midi* umidi = substream->rmidi->private_data; -- struct usbmidi_out_port *port = substream->runtime->private_data; -- -- substream_open(substream, 0); -- down_read(&umidi->disc_rwsem); -- if (!umidi->disconnected && port->autopm_reference) -- usb_autopm_put_interface(umidi->iface); -- up_read(&umidi->disc_rwsem); -- return 0; -+ return substream_open(substream, 0, 0); - } - - static void snd_usbmidi_output_trigger(struct snd_rawmidi_substream *substream, int up) -@@ -1164,14 +1167,12 @@ static void snd_usbmidi_output_drain(struct snd_rawmidi_substream *substream) - - static int snd_usbmidi_input_open(struct snd_rawmidi_substream *substream) - { -- substream_open(substream, 1); -- return 0; -+ return substream_open(substream, 1, 1); - } - - static int snd_usbmidi_input_close(struct snd_rawmidi_substream *substream) - { -- substream_open(substream, 0); -- return 0; -+ return substream_open(substream, 1, 0); - } - - static void snd_usbmidi_input_trigger(struct snd_rawmidi_substream *substream, int up) -@@ -2080,12 +2081,15 @@ void snd_usbmidi_input_stop(struct list_head* p) - unsigned int i, j; - - umidi = list_entry(p, struct snd_usb_midi, list); -+ if (!umidi->input_running) -+ return; - for (i = 0; i < MIDI_MAX_ENDPOINTS; ++i) { - struct snd_usb_midi_endpoint* ep = &umidi->endpoints[i]; - if (ep->in) - for (j = 0; j < INPUT_URBS; ++j) - usb_kill_urb(ep->in->urbs[j]); - } -+ umidi->input_running = 0; - } - - static void snd_usbmidi_input_start_ep(struct snd_usb_midi_in_endpoint* ep) -@@ -2110,8 +2114,11 @@ void snd_usbmidi_input_start(struct list_head* p) - int i; - - umidi = list_entry(p, struct snd_usb_midi, list); -+ if (umidi->input_running || !umidi->opened[1]) -+ return; - for (i = 0; i < MIDI_MAX_ENDPOINTS; ++i) - snd_usbmidi_input_start_ep(umidi->endpoints[i].in); -+ umidi->input_running = 1; - } - - /* -@@ -2250,9 +2257,6 @@ int snd_usbmidi_create(struct snd_card *card, - } - - list_add_tail(&umidi->list, midi_list); -- -- for (i = 0; i < MIDI_MAX_ENDPOINTS; ++i) -- snd_usbmidi_input_start_ep(umidi->endpoints[i].in); - return 0; - } - diff --git a/debian/patches/bugfix/all/exec-do-not-leave-bprm-interp-on-stack.patch b/debian/patches/bugfix/all/exec-do-not-leave-bprm-interp-on-stack.patch deleted file mode 100644 index 45a4ac26b..000000000 --- a/debian/patches/bugfix/all/exec-do-not-leave-bprm-interp-on-stack.patch +++ /dev/null @@ -1,115 +0,0 @@ -From: Kees Cook -Date: Thu, 6 Dec 2012 17:00:21 +1100 -Subject: [1/2] exec: do not leave bprm->interp on stack - -commit 1e1b8374592f5fb347625e84d8a5f2f40d858a24 upstream. - -If a series of scripts are executed, each triggering module loading via -unprintable bytes in the script header, kernel stack contents can leak -into the command line. - -Normally execution of binfmt_script and binfmt_misc happens recursively. -However, when modules are enabled, and unprintable bytes exist in the -bprm->buf, execution will restart after attempting to load matching binfmt -modules. Unfortunately, the logic in binfmt_script and binfmt_misc does -not expect to get restarted. They leave bprm->interp pointing to their -local stack. This means on restart bprm->interp is left pointing into -unused stack memory which can then be copied into the userspace argv -areas. - -After additional study, it seems that both recursion and restart remains -the desirable way to handle exec with scripts, misc, and modules. As -such, we need to protect the changes to interp. - -This changes the logic to require allocation for any changes to the -bprm->interp. To avoid adding a new kmalloc to every exec, the default -value is left as-is. Only when passing through binfmt_script or -binfmt_misc does an allocation take place. - -For a proof of concept, see DoTest.sh from: -http://www.halfdog.net/Security/2012/LinuxKernelBinfmtScriptStackDataDisclosure/ - -Signed-off-by: Kees Cook -Cc: halfdog -Cc: P J P -Cc: Alexander Viro -Signed-off-by: Andrew Morton ---- - fs/binfmt_misc.c | 5 ++++- - fs/binfmt_script.c | 4 +++- - fs/exec.c | 15 +++++++++++++++ - include/linux/binfmts.h | 1 + - 4 files changed, 23 insertions(+), 2 deletions(-) - -diff --git a/fs/binfmt_misc.c b/fs/binfmt_misc.c -index b0b70fb..b0c1755 100644 ---- a/fs/binfmt_misc.c -+++ b/fs/binfmt_misc.c -@@ -176,7 +176,10 @@ static int load_misc_binary(struct linux_binprm *bprm) - goto _error; - bprm->argc ++; - -- bprm->interp = iname; /* for binfmt_script */ -+ /* Update interp in case binfmt_script needs it. */ -+ retval = bprm_change_interp(iname, bprm); -+ if (retval < 0) -+ goto _error; - - interp_file = open_exec (iname); - retval = PTR_ERR (interp_file); -diff --git a/fs/binfmt_script.c b/fs/binfmt_script.c -index 8c95499..4834f2c 100644 ---- a/fs/binfmt_script.c -+++ b/fs/binfmt_script.c -@@ -82,7 +82,9 @@ static int load_script(struct linux_binprm *bprm) - retval = copy_strings_kernel(1, &i_name, bprm); - if (retval) return retval; - bprm->argc++; -- bprm->interp = interp; -+ retval = bprm_change_interp(interp, bprm); -+ if (retval < 0) -+ return retval; - - /* - * OK, now restart the process with the interpreter's dentry. -diff --git a/fs/exec.c b/fs/exec.c -index b71b08c..bf50973 100644 ---- a/fs/exec.c -+++ b/fs/exec.c -@@ -1175,9 +1175,24 @@ void free_bprm(struct linux_binprm *bprm) - mutex_unlock(¤t->signal->cred_guard_mutex); - abort_creds(bprm->cred); - } -+ /* If a binfmt changed the interp, free it. */ -+ if (bprm->interp != bprm->filename) -+ kfree(bprm->interp); - kfree(bprm); - } - -+int bprm_change_interp(char *interp, struct linux_binprm *bprm) -+{ -+ /* If a binfmt changed the interp, free it first. */ -+ if (bprm->interp != bprm->filename) -+ kfree(bprm->interp); -+ bprm->interp = kstrdup(interp, GFP_KERNEL); -+ if (!bprm->interp) -+ return -ENOMEM; -+ return 0; -+} -+EXPORT_SYMBOL(bprm_change_interp); -+ - /* - * install the new credentials for this executable - */ -diff --git a/include/linux/binfmts.h b/include/linux/binfmts.h -index 2630c9b..7f0e297 100644 ---- a/include/linux/binfmts.h -+++ b/include/linux/binfmts.h -@@ -114,6 +114,7 @@ extern int setup_arg_pages(struct linux_binprm * bprm, - unsigned long stack_top, - int executable_stack); - extern int bprm_mm_init(struct linux_binprm *bprm); -+extern int bprm_change_interp(char *interp, struct linux_binprm *bprm); - extern int copy_strings_kernel(int argc, const char *const *argv, - struct linux_binprm *bprm); - extern int prepare_bprm_creds(struct linux_binprm *bprm); diff --git a/debian/patches/bugfix/all/firmware-remove-redundant-log-messages-from-drivers.patch b/debian/patches/bugfix/all/firmware-remove-redundant-log-messages-from-drivers.patch index f801debde..8d8d059de 100644 --- a/debian/patches/bugfix/all/firmware-remove-redundant-log-messages-from-drivers.patch +++ b/debian/patches/bugfix/all/firmware-remove-redundant-log-messages-from-drivers.patch @@ -1533,10 +1533,10 @@ upstream submission. hdr = (struct b43_fw_header *)(blob->data); --- a/drivers/net/wireless/b43legacy/main.c +++ b/drivers/net/wireless/b43legacy/main.c -@@ -1529,11 +1529,8 @@ static int do_request_fw(struct b43legac - "b43legacy%s/%s.fw", - modparam_fwpostfix, name); - err = request_firmware(fw, path, dev->dev->dev); +@@ -1554,11 +1554,8 @@ static int do_request_fw(struct b43legac + } else { + err = request_firmware(fw, path, dev->dev->dev); + } - if (err) { - b43legacyerr(dev->wl, "Firmware file \"%s\" not found " - "or load failed.\n", path); @@ -1794,7 +1794,7 @@ upstream submission. if (ret) { --- a/drivers/net/wireless/p54/p54usb.c +++ b/drivers/net/wireless/p54/p54usb.c -@@ -931,7 +931,6 @@ static void p54u_load_firmware_cb(const +@@ -935,7 +935,6 @@ static void p54u_load_firmware_cb(const err = p54u_start_ops(priv); } else { err = -ENOENT; @@ -2747,7 +2747,7 @@ upstream submission. /* The FPGA is a Xilinx Spartan IIE XC2S50E */ --- a/sound/pci/hda/hda_intel.c +++ b/sound/pci/hda/hda_intel.c -@@ -3280,10 +3280,8 @@ static void azx_firmware_cb(const struct +@@ -3289,10 +3289,8 @@ static void azx_firmware_cb(const struct struct azx *chip = card->private_data; struct pci_dev *pci = chip->pci; diff --git a/debian/patches/bugfix/all/firmware_class-log-every-success-and-failure.patch b/debian/patches/bugfix/all/firmware_class-log-every-success-and-failure.patch index 2f5fcb338..4c66d96c1 100644 --- a/debian/patches/bugfix/all/firmware_class-log-every-success-and-failure.patch +++ b/debian/patches/bugfix/all/firmware_class-log-every-success-and-failure.patch @@ -19,7 +19,7 @@ removed in later patches. --- a/drivers/base/firmware_class.c +++ b/drivers/base/firmware_class.c -@@ -500,14 +500,23 @@ static ssize_t firmware_loading_store(st +@@ -502,14 +502,23 @@ static ssize_t firmware_loading_store(st * is completed. * */ fw_map_pages_buf(fw_buf); @@ -45,17 +45,17 @@ removed in later patches. fw_load_abort(fw_priv); break; } -@@ -671,6 +680,9 @@ static void firmware_class_timeout(u_lon - { - struct firmware_priv *fw_priv = (struct firmware_priv *) data; - +@@ -679,6 +688,9 @@ static void firmware_class_timeout_work( + mutex_unlock(&fw_lock); + return; + } + dev_err(fw_priv->dev.parent, + "firmware: agent did not handle request for %s\n", + fw_priv->buf->fw_id); fw_load_abort(fw_priv); + mutex_unlock(&fw_lock); } - -@@ -798,7 +810,8 @@ _request_firmware_prepare(const struct f +@@ -807,7 +819,8 @@ _request_firmware_prepare(const struct f } if (fw_get_builtin_firmware(firmware, name)) { @@ -65,7 +65,7 @@ removed in later patches. return NULL; } -@@ -874,25 +887,28 @@ static int _request_firmware_load(struct +@@ -885,25 +898,28 @@ static int _request_firmware_load(struct retval = device_add(f_dev); if (retval) { @@ -96,9 +96,9 @@ removed in later patches. - dev_dbg(f_dev, "firmware: requesting %s\n", buf->fw_id); + dev_dbg(f_dev->parent, "firmware: requesting %s\n", buf->fw_id); if (timeout != MAX_SCHEDULE_TIMEOUT) - mod_timer(&fw_priv->timeout, - round_jiffies_up(jiffies + timeout)); -@@ -906,8 +922,15 @@ static int _request_firmware_load(struct + schedule_delayed_work(&fw_priv->timeout_work, timeout); + +@@ -916,8 +932,15 @@ static int _request_firmware_load(struct handle_fw: mutex_lock(&fw_lock); @@ -115,7 +115,7 @@ removed in later patches. /* * add firmware name into devres list so that we can auto cache -@@ -986,6 +1009,9 @@ request_firmware(const struct firmware * +@@ -996,6 +1019,9 @@ request_firmware(const struct firmware * } if (ret) _request_firmware_cleanup(firmware_p); @@ -125,7 +125,7 @@ removed in later patches. return ret; } -@@ -1035,7 +1061,7 @@ static void request_firmware_work_func(s +@@ -1045,7 +1071,7 @@ static void request_firmware_work_func(s ret = _request_firmware_load(fw_priv, fw_work->uevent, timeout); usermodehelper_read_unlock(); } else { diff --git a/debian/patches/bugfix/all/hid-add-apple-wireless-keyboard-2011-ansi-to-special-driver-list.patch b/debian/patches/bugfix/all/hid-add-apple-wireless-keyboard-2011-ansi-to-special-driver-list.patch deleted file mode 100644 index 9296b4c7a..000000000 --- a/debian/patches/bugfix/all/hid-add-apple-wireless-keyboard-2011-ansi-to-special-driver-list.patch +++ /dev/null @@ -1,21 +0,0 @@ -From: Ben Hutchings -Subject: HID: Add Apple wireless keyboard 2011 ANSI to special driver list -Date: Sun, 02 Dec 2012 14:29:04 +0000 -Bug-Debian: http://bugs.debian.org/694546 - -Commit 0a97e1e9f9a6 ('HID: apple: Add Apple wireless keyboard 2011 ANSI PID') -did not update the special driver list in hid-core.c. - -Reported-by: Ari Pollak -Signed-off-by: Ben Hutchings ---- ---- a/drivers/hid/hid-core.c -+++ b/drivers/hid/hid-core.c -@@ -1528,6 +1528,7 @@ - { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_ANSI) }, - { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_ISO) }, - { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_JIS) }, -+ { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_2011_ANSI) }, - { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_2011_ISO) }, - { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_FOUNTAIN_TP_ONLY) }, - { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER1_TP_ONLY) }, diff --git a/debian/patches/series b/debian/patches/series index ac5648dcf..4c7ad0bcb 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -44,7 +44,6 @@ bugfix/alpha/alpha-use-large-data-model.diff debian/iwlwifi-do-not-request-unreleased-firmware.patch debian/cirrus-disable-modeset-by-default.patch debian/fs-enable-link-security-restrictions-by-default.patch -bugfix/all/hid-add-apple-wireless-keyboard-2011-ansi-to-special-driver-list.patch bugfix/arm/lis3l02dq-fix-building-without-irq-to-gpio.patch bugfix/arm/omap-musb-choice.patch bugfix/x86/asus-laptop-Do-not-call-HWRS-on-init.patch @@ -57,7 +56,6 @@ features/all/xen/microcode-typo.patch bugfix/all/firmware_class-log-every-success-and-failure.patch bugfix/all/firmware-remove-redundant-log-messages-from-drivers.patch -bugfix/all/exec-do-not-leave-bprm-interp-on-stack.patch bugfix/all/exec-use-ELOOP-for-max-recursion-depth.patch bugfix/all/megaraid_sas-fix-memory-leak-if-SGL-has-zero-length-entries.patch bugfix/all/pps-ptp-Remove-dependencies-on-EXPERIMENTAL.patch @@ -70,5 +68,3 @@ debian/ast-disable-autoload.patch debian/mgag200-disable-autoload.patch clean-modules-without-link-vmlinux.sh.patch bugfix/all/ath6kl-do-not-use-virt_addr_valid.patch -bugfix/all/ALSA-usb-audio-Avoid-autopm-calls-after-disconnectio.patch -bugfix/all/ALSA-usb-audio-Fix-missing-autopm-for-MIDI-input.patch