Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1555588 > unrolled thread

[PATCH 4.4 000/101] 4.4.42-stable review

Started byGreg Kroah-Hartman <gregkh@linuxfoundation.org>
First post2017-01-10 16:20 +0100
Last post2017-01-10 23:30 +0100
Articles 20 — 3 participants

Back to article view | Back to linux.kernel


Contents

  [PATCH 4.4 000/101] 4.4.42-stable review Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-10 16:20 +0100
    [PATCH 4.4 004/101] ARM: davinci: da850: dont add emac clock to lookup table twice Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-10 16:20 +0100
    [PATCH 4.4 059/101] mei: bus: fix mei_cldev_enable KDoc Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-10 16:20 +0100
    [PATCH 4.4 026/101] usb: xhci: hold lock over xhci_abort_cmd_ring() Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-10 16:20 +0100
    [PATCH 4.4 051/101] usb: musb: Fix trying to free already-free IRQ 4 Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-10 16:20 +0100
    [PATCH 4.4 055/101] USB: serial: kl5kusb105: abort on open exception path Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-10 16:20 +0100
    [PATCH 4.4 043/101] USB: serial: mos7720: fix NULL-deref at open Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-10 16:20 +0100
    [PATCH 4.4 020/101] xhci: workaround for hosts missing CAS bit Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-10 16:20 +0100
    [PATCH 4.4 056/101] ARM: dts: r8a7794: Correct hsusb parent clock Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-10 16:20 +0100
    [PATCH 4.4 005/101] mac80211: initialize fast-xmit info later Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-10 16:20 +0100
    [PATCH 4.4 003/101] ALSA: usb-audio: Fix irq/process data synchronization Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-10 16:20 +0100
    [PATCH 4.4 013/101] USB: gadgetfs: fix use-after-free bug Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-10 16:30 +0100
    [PATCH 4.4 014/101] USB: gadgetfs: fix checks of wTotalLength in config descriptors Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-10 16:30 +0100
    [PATCH 4.4 019/101] usb: xhci: fix possible wild pointer Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-10 16:30 +0100
    [PATCH 4.4 001/101] ALSA: hda - Fix up GPIO for ASUS ROG Ranger Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-10 16:30 +0100
    [PATCH 4.4 018/101] usb: dwc3: core: avoid Overflow events Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-10 16:30 +0100
    [PATCH 4.4 011/101] usb: gadgetfs: restrict upper bound on device configuration size Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-10 16:30 +0100
    [PATCH 4.4 015/101] USB: fix problems with duplicate endpoint addresses Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-10 16:30 +0100
    Re: [PATCH 4.4 000/101] 4.4.42-stable review Shuah Khan <shuah.kh@samsung.com> - 2017-01-10 18:40 +0100
    Re: [PATCH 4.4 000/101] 4.4.42-stable review Guenter Roeck <linux@roeck-us.net> - 2017-01-10 23:30 +0100

#1555588 — [PATCH 4.4 000/101] 4.4.42-stable review

FromGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Date2017-01-10 16:20 +0100
Subject[PATCH 4.4 000/101] 4.4.42-stable review
Message-ID<sY4OB-1Tf-3@gated-at.bofh.it>
This is the start of the stable review cycle for the 4.4.42 release.
There are 101 patches in this series, all will be posted as a response
to this one.  If anyone has any issues with these being applied, please
let me know.

Responses should be made by Thu Jan 12 13:15:04 UTC 2017.
Anything received after that time might be too late.

The whole patch series can be found in one patch at:
	kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.4.42-rc1.gz
or in the git tree and branch at:
  git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-4.4.y
and the diffstat can be found below.

thanks,

greg k-h

-------------
Pseudo-Shortlog of commits:

Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Linux 4.4.42-rc1

Thomas Gleixner <tglx@linutronix.de>
    tick/broadcast: Prevent NULL pointer dereference

Michel Dänzer <michel.daenzer@amd.com>
    drm/radeon: Always store CRTC relative radeon_crtc->cursor_x/y values

Mauro Carvalho Chehab <mchehab@osg.samsung.com>
    cx23885-dvb: move initialization of a8293_pdata

Arnd Bergmann <arnd@arndb.de>
    net: vxge: avoid unused function warnings

Paul Burton <paul.burton@imgtec.com>
    net: ti: cpmac: Fix compiler warning due to type confusion

Arnd Bergmann <arnd@arndb.de>
    cred/userns: define current_user_ns() as a function

H Hartley Sweeten <hsweeten@visionengravers.com>
    staging: comedi: dt282x: tidy up register bit defines

Johan Hovold <johan@kernel.org>
    powerpc/pci/rpadlpar: Fix device reference leaks

Shaohua Li <shli@fb.com>
    md: MD_RECOVERY_NEEDED is set for mddev->recovery

Ard Biesheuvel <ard.biesheuvel@linaro.org>
    crypto: arm64/aes-ce - fix for big endian

Ard Biesheuvel <ard.biesheuvel@linaro.org>
    crypto: arm64/aes-xts-ce: fix for big endian

Ard Biesheuvel <ard.biesheuvel@linaro.org>
    crypto: arm64/sha1-ce - fix for big endian

Ard Biesheuvel <ard.biesheuvel@linaro.org>
    crypto: arm64/aes-neon - fix for big endian

Ard Biesheuvel <ard.biesheuvel@linaro.org>
    crypto: arm64/aes-ccm-ce: fix for big endian

Ard Biesheuvel <ard.biesheuvel@linaro.org>
    crypto: arm/aes-ce - fix for big endian

Ard Biesheuvel <ard.biesheuvel@linaro.org>
    crypto: arm64/ghash-ce - fix for big endian

Ard Biesheuvel <ard.biesheuvel@linaro.org>
    crypto: arm64/sha2-ce - fix for big endian

Dan Carpenter <dan.carpenter@oracle.com>
    s390/crypto: unlock on error in prng_tdes_read()

Dan Carpenter <dan.carpenter@oracle.com>
    mmc: mmc_test: Uninitialized return value

Tony Lindgren <tony@atomide.com>
    PM / wakeirq: Fix dedicated wakeirq for drivers not using autosuspend

Florian Fainelli <f.fainelli@gmail.com>
    irqchip/bcm7038-l1: Implement irq_cpu_offline() callback

Dan Carpenter <dan.carpenter@oracle.com>
    target/iscsi: Fix double free in lio_target_tiqn_addtpg()

Arnd Bergmann <arnd@arndb.de>
    scsi: mvsas: fix command_active typo

Charles Keepax <ckeepax@opensource.wolfsonmicro.com>
    ASoC: samsung: i2s: Fixup last IRQ unsafe spin lock call

Xunlei Pang <xlpang@redhat.com>
    iommu/vt-d: Flush old iommu caches for kdump when the device gets context mapped

Jacob Pan <jacob.jun.pan@linux.intel.com>
    iommu/vt-d: Fix pasid table size encoding

Huang Rui <ray.huang@amd.com>
    iommu/amd: Fix the left value check of cmd buffer

Dan Carpenter <dan.carpenter@oracle.com>
    iommu/amd: Missing error code in amd_iommu_init_device()

Vladimir Zapolskiy <vz@mleia.com>
    clk: imx31: fix rewritten input argument of mx31_clocks_init()

Pan Bian <bianpan2016@163.com>
    clk: clk-wm831x: fix a logic error

Guenter Roeck <linux@roeck-us.net>
    hwmon: (g762) Fix overflows and crash seen when writing limit attributes

Guenter Roeck <linux@roeck-us.net>
    hwmon: (nct7802) Fix overflows seen when writing into limit attributes

Guenter Roeck <linux@roeck-us.net>
    hwmon: (ds620) Fix overflows seen when writing temperature limits

Jared Bents <jared.bents@rockwellcollins.com>
    hwmon: (amc6821) sign extension temperature

Javier Martinez Canillas <javier@osg.samsung.com>
    hwmon: (scpi) Fix module autoload

Guenter Roeck <linux@roeck-us.net>
    cris: Only build flash rescue image if CONFIG_ETRAX_AXISFLASHMAP is selected

Nicolas Iooss <nicolas.iooss_linux@m4x.org>
    ath10k: use the right length of "background"

Arnd Bergmann <arnd@arndb.de>
    stable-fixup: hotplug: fix unused function warning

Felipe Balbi <felipe.balbi@linux.intel.com>
    usb: dwc3: ep0: explicitly call dwc3_ep0_prepare_one_trb()

Felipe Balbi <felipe.balbi@linux.intel.com>
    usb: dwc3: ep0: add dwc3_ep0_prepare_one_trb()

Felipe Balbi <felipe.balbi@linux.intel.com>
    usb: dwc3: gadget: always unmap EP0 requests

Eva Rachel Retuya <eraretuya@gmail.com>
    staging: iio: ad7606: fix improper setting of oversampling pins

Alexander Usyskin <alexander.usyskin@intel.com>
    mei: bus: fix mei_cldev_enable KDoc

Johan Hovold <johan@kernel.org>
    USB: serial: io_ti: bind to interface after fw download

Johan Hovold <johan@kernel.org>
    USB: phy: am335x-control: fix device and of_node leaks

Geert Uytterhoeven <geert+renesas@glider.be>
    ARM: dts: r8a7794: Correct hsusb parent clock

Pan Bian <bianpan2016@163.com>
    USB: serial: kl5kusb105: abort on open exception path

Takashi Iwai <tiwai@suse.de>
    ALSA: usb-audio: Fix bogus error return in snd_usb_create_stream()

Jérémy Lefaure <jeremy.lefaure@lse.epita.fr>
    usb: musb: blackfin: add bfin_fifo_offset in bfin_ops

Geert Uytterhoeven <geert@linux-m68k.org>
    usb: hub: Move hub_port_disable() to fix warning if PM is disabled

Tony Lindgren <tony@atomide.com>
    usb: musb: Fix trying to free already-free IRQ 4

Heikki Krogerus <heikki.krogerus@linux.intel.com>
    usb: dwc3: pci: add Intel Gemini Lake PCI ID

OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
    xhci: Fix race related to abort operation

OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
    xhci: Use delayed_work instead of timer for command timeout

Dan Carpenter <dan.carpenter@oracle.com>
    usb: xhci-mem: use passed in GFP flags instead of GFP_KERNEL

Johan Hovold <johan@kernel.org>
    USB: serial: mos7720: fix parallel probe

Johan Hovold <johan@kernel.org>
    USB: serial: mos7720: fix parport use-after-free on probe errors

Johan Hovold <johan@kernel.org>
    USB: serial: mos7720: fix use-after-free on probe errors

Johan Hovold <johan@kernel.org>
    USB: serial: mos7720: fix NULL-deref at open

Johan Hovold <johan@kernel.org>
    USB: serial: mos7840: fix NULL-deref at open

Johan Hovold <johan@kernel.org>
    USB: serial: kobil_sct: fix NULL-deref in write

Johan Hovold <johan@kernel.org>
    USB: serial: cyberjack: fix NULL-deref at open

Johan Hovold <johan@kernel.org>
    USB: serial: oti6858: fix NULL-deref at open

Johan Hovold <johan@kernel.org>
    USB: serial: io_edgeport: fix NULL-deref at open

Johan Hovold <johan@kernel.org>
    USB: serial: ti_usb_3410_5052: fix NULL-deref at open

Johan Hovold <johan@kernel.org>
    USB: serial: garmin_gps: fix memory leak on failed URB submit

Johan Hovold <johan@kernel.org>
    USB: serial: iuu_phoenix: fix NULL-deref at open

Johan Hovold <johan@kernel.org>
    USB: serial: io_ti: fix I/O after disconnect

Johan Hovold <johan@kernel.org>
    USB: serial: io_ti: fix another NULL-deref at open

Johan Hovold <johan@kernel.org>
    USB: serial: io_ti: fix NULL-deref at open

Johan Hovold <johan@kernel.org>
    USB: serial: spcp8x5: fix NULL-deref at open

Johan Hovold <johan@kernel.org>
    USB: serial: keyspan_pda: verify endpoints at probe

Johan Hovold <johan@kernel.org>
    USB: serial: pl2303: fix NULL-deref at open

Johan Hovold <johan@kernel.org>
    USB: serial: quatech2: fix sleep-while-atomic in close

Johan Hovold <johan@kernel.org>
    USB: serial: omninet: fix NULL-derefs at open and disconnect

Lu Baolu <baolu.lu@linux.intel.com>
    usb: xhci: hold lock over xhci_abort_cmd_ring()

Mathias Nyman <mathias.nyman@linux.intel.com>
    xhci: Handle command completion and timeout race

Baolin Wang <baolin.wang@linaro.org>
    usb: host: xhci: Fix possible wild pointer when handling abort command

Lu Baolu <baolu.lu@linux.intel.com>
    usb: xhci: fix return value of xhci_setup_device()

Mathias Nyman <mathias.nyman@linux.intel.com>
    xhci: free xhci virtual devices with leaf nodes first

Wan Ahmad Zainie <wan.ahmad.zainie.wan.mohamad@intel.com>
    usb: xhci: apply XHCI_PME_STUCK_QUIRK to Intel Apollo Lake

Mathias Nyman <mathias.nyman@linux.intel.com>
    xhci: workaround for hosts missing CAS bit

Lu Baolu <baolu.lu@linux.intel.com>
    usb: xhci: fix possible wild pointer

Felipe Balbi <felipe.balbi@linux.intel.com>
    usb: dwc3: core: avoid Overflow events

Krzysztof Opasiak <k.opasiak@samsung.com>
    usb: gadget: composite: Test get_alt() presence instead of set_alt()

Alan Stern <stern@rowland.harvard.edu>
    USB: dummy-hcd: fix bug in stop_activity (handle ep0)

Alan Stern <stern@rowland.harvard.edu>
    USB: fix problems with duplicate endpoint addresses

Alan Stern <stern@rowland.harvard.edu>
    USB: gadgetfs: fix checks of wTotalLength in config descriptors

Alan Stern <stern@rowland.harvard.edu>
    USB: gadgetfs: fix use-after-free bug

Alan Stern <stern@rowland.harvard.edu>
    USB: gadgetfs: fix unbounded memory allocation bug

Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    usb: gadgetfs: restrict upper bound on device configuration size

Oliver Neukum <oneukum@suse.com>
    usb: storage: unusual_uas: Add JMicron JMS56x to unusual device

Bin Liu <b-liu@ti.com>
    usb: musb: dsps: implement clear_ep_rxintr() callback

Bin Liu <b-liu@ti.com>
    usb: musb: core: add clear_ep_rxintr() to musb_platform_ops

James Hogan <james.hogan@imgtec.com>
    KVM: MIPS: Flush KVM entry code from icache globally

Xiao Guangrong <guangrong.xiao@linux.intel.com>
    KVM: x86: reset MMU on KVM_SET_VCPU_EVENTS

Johannes Berg <johannes.berg@intel.com>
    mac80211: initialize fast-xmit 'info' later

Bartosz Golaszewski <bgolaszewski@baylibre.com>
    ARM: davinci: da850: don't add emac clock to lookup table twice

Ioan-Adrian Ratiu <adi@adirat.com>
    ALSA: usb-audio: Fix irq/process data synchronization

Takashi Iwai <tiwai@suse.de>
    ALSA: hda - Apply asus-mode8 fixup to ASUS X71SL

Takashi Iwai <tiwai@suse.de>
    ALSA: hda - Fix up GPIO for ASUS ROG Ranger


-------------

Diffstat:

 Makefile                                       |   4 +-
 arch/arm/boot/dts/r8a7794.dtsi                 |   2 +-
 arch/arm/crypto/aes-ce-glue.c                  |   5 +
 arch/arm/mach-davinci/da850.c                  |  12 +-
 arch/arm64/crypto/aes-ce-ccm-core.S            |  53 +++---
 arch/arm64/crypto/aes-ce-cipher.c              |  25 +--
 arch/arm64/crypto/aes-ce.S                     |   1 +
 arch/arm64/crypto/aes-modes.S                  |   3 +-
 arch/arm64/crypto/aes-neon.S                   |  25 +--
 arch/arm64/crypto/ghash-ce-core.S              |   6 +-
 arch/arm64/crypto/sha1-ce-core.S               |   4 +-
 arch/arm64/crypto/sha2-ce-core.S               |   4 +-
 arch/cris/boot/rescue/Makefile                 |   8 +
 arch/mips/kvm/mips.c                           |   4 +-
 arch/s390/crypto/prng.c                        |   6 +-
 arch/x86/kvm/x86.c                             |   9 +-
 drivers/base/power/power.h                     |  19 ++-
 drivers/base/power/runtime.c                   |   8 +-
 drivers/base/power/wakeirq.c                   |  76 +++++++--
 drivers/clk/clk-wm831x.c                       |   2 +-
 drivers/clk/imx/clk-imx31.c                    |   4 +-
 drivers/gpu/drm/radeon/radeon_cursor.c         |   6 +-
 drivers/hwmon/amc6821.c                        |   4 +-
 drivers/hwmon/ds620.c                          |   2 +-
 drivers/hwmon/g762.c                           |  11 +-
 drivers/hwmon/nct7802.c                        |   8 +-
 drivers/hwmon/scpi-hwmon.c                     |   1 +
 drivers/iommu/amd_iommu.c                      |   2 +-
 drivers/iommu/amd_iommu_v2.c                   |   4 +-
 drivers/iommu/intel-iommu.c                    |  42 ++++-
 drivers/irqchip/irq-bcm7038-l1.c               |  26 +++
 drivers/md/md.c                                |   2 +-
 drivers/media/pci/cx23885/cx23885-dvb.c        |   6 +-
 drivers/misc/mei/bus.c                         |   2 +-
 drivers/mmc/card/mmc_test.c                    |   2 +-
 drivers/net/ethernet/neterion/vxge/vxge-main.c |  31 ++--
 drivers/net/ethernet/ti/cpmac.c                |   5 +-
 drivers/net/wireless/ath/ath10k/spectral.c     |   2 +-
 drivers/pci/hotplug/rpadlpar_core.c            |  10 +-
 drivers/scsi/mvsas/mv_94xx.c                   |   2 +-
 drivers/staging/comedi/drivers/dt282x.c        |  65 ++++----
 drivers/staging/iio/adc/ad7606_core.c          |   2 +-
 drivers/target/iscsi/iscsi_target_tpg.c        |   1 -
 drivers/usb/core/config.c                      |  10 ++
 drivers/usb/core/hub.c                         |  59 ++++---
 drivers/usb/dwc3/core.h                        |   4 +-
 drivers/usb/dwc3/dwc3-pci.c                    |   2 +
 drivers/usb/dwc3/ep0.c                         |  50 +++---
 drivers/usb/dwc3/gadget.c                      |   8 +-
 drivers/usb/gadget/composite.c                 |  12 +-
 drivers/usb/gadget/legacy/inode.c              |  17 +-
 drivers/usb/gadget/udc/dummy_hcd.c             |   6 +-
 drivers/usb/host/xhci-hub.c                    |  37 +++++
 drivers/usb/host/xhci-mem.c                    |  50 +++++-
 drivers/usb/host/xhci-pci.c                    |   9 +-
 drivers/usb/host/xhci-ring.c                   | 219 ++++++++++++++-----------
 drivers/usb/host/xhci.c                        |   4 +-
 drivers/usb/host/xhci.h                        |   8 +-
 drivers/usb/musb/blackfin.c                    |   1 +
 drivers/usb/musb/musb_core.h                   |   7 +
 drivers/usb/musb/musb_dsps.c                   |  12 ++
 drivers/usb/musb/musb_host.c                   |  10 +-
 drivers/usb/musb/musbhsdma.h                   |   2 +-
 drivers/usb/phy/phy-am335x-control.c           |   2 +
 drivers/usb/serial/cyberjack.c                 |  10 ++
 drivers/usb/serial/garmin_gps.c                |   1 +
 drivers/usb/serial/io_edgeport.c               |   5 +
 drivers/usb/serial/io_ti.c                     |  22 ++-
 drivers/usb/serial/iuu_phoenix.c               |  11 ++
 drivers/usb/serial/keyspan_pda.c               |  14 ++
 drivers/usb/serial/kl5kusb105.c                |   2 +
 drivers/usb/serial/kobil_sct.c                 |  12 ++
 drivers/usb/serial/mos7720.c                   |  51 +++---
 drivers/usb/serial/mos7840.c                   |  12 ++
 drivers/usb/serial/omninet.c                   |  13 ++
 drivers/usb/serial/oti6858.c                   |  16 ++
 drivers/usb/serial/pl2303.c                    |   8 +
 drivers/usb/serial/quatech2.c                  |   4 -
 drivers/usb/serial/spcp8x5.c                   |  14 ++
 drivers/usb/serial/ti_usb_3410_5052.c          |   7 +
 drivers/usb/storage/unusual_devs.h             |   7 +
 include/linux/capability.h                     |   2 -
 include/linux/cred.h                           |   5 +-
 kernel/cpu.c                                   |   9 +-
 kernel/time/tick-broadcast.c                   |   3 +
 net/mac80211/tx.c                              |   3 +-
 sound/pci/hda/patch_realtek.c                  |   2 +
 sound/soc/samsung/i2s.c                        |   5 +-
 sound/usb/card.c                               |   1 -
 sound/usb/endpoint.c                           |  17 +-
 sound/usb/endpoint.h                           |   2 +-
 sound/usb/pcm.c                                |  10 +-
 92 files changed, 903 insertions(+), 410 deletions(-)

[toc] | [next] | [standalone]


#1555590 — [PATCH 4.4 004/101] ARM: davinci: da850: dont add emac clock to lookup table twice

FromGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Date2017-01-10 16:20 +0100
Subject[PATCH 4.4 004/101] ARM: davinci: da850: dont add emac clock to lookup table twice
Message-ID<sY6nn-2ZC-19@gated-at.bofh.it>
In reply to#1555588
4.4-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Bartosz Golaszewski <bgolaszewski@baylibre.com>

commit ef37427ac5677331145ab27a17e6f5f1b43f0c11 upstream.

Similarly to the aemif clock - this screws up the linked list of clock
children. Create a separate clock for mdio inheriting the rate from
emac_clk.

Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
[nsekhar@ti.com: add a comment over mdio_clk to explaing its existence +
		 commit headline updates]
Signed-off-by: Sekhar Nori <nsekhar@ti.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 arch/arm/mach-davinci/da850.c |   12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

--- a/arch/arm/mach-davinci/da850.c
+++ b/arch/arm/mach-davinci/da850.c
@@ -298,6 +298,16 @@ static struct clk emac_clk = {
 	.gpsc		= 1,
 };
 
+/*
+ * In order to avoid adding the emac_clk to the clock lookup table twice (and
+ * screwing up the linked list in the process) create a separate clock for
+ * mdio inheriting the rate from emac_clk.
+ */
+static struct clk mdio_clk = {
+	.name		= "mdio",
+	.parent		= &emac_clk,
+};
+
 static struct clk mcasp_clk = {
 	.name		= "mcasp",
 	.parent		= &pll0_sysclk2,
@@ -462,7 +472,7 @@ static struct clk_lookup da850_clks[] =
 	CLK(NULL,		"arm",		&arm_clk),
 	CLK(NULL,		"rmii",		&rmii_clk),
 	CLK("davinci_emac.1",	NULL,		&emac_clk),
-	CLK("davinci_mdio.0",	"fck",		&emac_clk),
+	CLK("davinci_mdio.0",	"fck",		&mdio_clk),
 	CLK("davinci-mcasp.0",	NULL,		&mcasp_clk),
 	CLK("da8xx_lcdc.0",	"fck",		&lcdc_clk),
 	CLK("da830-mmc.0",	NULL,		&mmcsd0_clk),

[toc] | [prev] | [next] | [standalone]


#1555591 — [PATCH 4.4 059/101] mei: bus: fix mei_cldev_enable KDoc

FromGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Date2017-01-10 16:20 +0100
Subject[PATCH 4.4 059/101] mei: bus: fix mei_cldev_enable KDoc
Message-ID<sY6no-2ZC-25@gated-at.bofh.it>
In reply to#1555588
4.4-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Alexander Usyskin <alexander.usyskin@intel.com>

commit 5026c9cb0744a9cd40242743ca91a5d712f468c6 upstream.

Adjust function name in KDoc.

Fixes: d49dc5e76fc9 (mei: bus: use mei_cldev_ prefix for the API functions)
Signed-off-by: Alexander Usyskin <alexander.usyskin@intel.com>
Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/misc/mei/bus.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- a/drivers/misc/mei/bus.c
+++ b/drivers/misc/mei/bus.c
@@ -399,7 +399,7 @@ bool mei_cldev_enabled(struct mei_cl_dev
 EXPORT_SYMBOL_GPL(mei_cldev_enabled);
 
 /**
- * mei_cldev_enable_device - enable me client device
+ * mei_cldev_enable - enable me client device
  *     create connection with me client
  *
  * @cldev: me client device

[toc] | [prev] | [next] | [standalone]


#1555593 — [PATCH 4.4 026/101] usb: xhci: hold lock over xhci_abort_cmd_ring()

FromGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Date2017-01-10 16:20 +0100
Subject[PATCH 4.4 026/101] usb: xhci: hold lock over xhci_abort_cmd_ring()
Message-ID<sY6no-2ZC-37@gated-at.bofh.it>
In reply to#1555588
4.4-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Lu Baolu <baolu.lu@linux.intel.com>

commit 4dea70778c0f48b4385c7720c363ec8d37a401b4 upstream.

In command timer function, xhci_handle_command_timeout(), xhci->lock
is unlocked before call into xhci_abort_cmd_ring(). This might cause
race between the timer function and the event handler.

The xhci_abort_cmd_ring() function sets the CMD_RING_ABORT bit in the
command register and polling it until the setting takes effect. A stop
command ring event might be handled between writing the abort bit and
polling for it. The event handler will restart the command ring, which
causes the failure of polling, and we ever believed that we failed to
stop it.

As a bonus, this also fixes some issues of calling functions without
locking in xhci_handle_command_timeout().

Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com>
Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/usb/host/xhci-ring.c |   13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

--- a/drivers/usb/host/xhci-ring.c
+++ b/drivers/usb/host/xhci-ring.c
@@ -1288,29 +1288,34 @@ void xhci_handle_command_timeout(unsigne
 	hw_ring_state = xhci_read_64(xhci, &xhci->op_regs->cmd_ring);
 	if ((xhci->cmd_ring_state & CMD_RING_STATE_RUNNING) &&
 	    (hw_ring_state & CMD_RING_RUNNING))  {
-		spin_unlock_irqrestore(&xhci->lock, flags);
 		xhci_dbg(xhci, "Command timeout\n");
 		ret = xhci_abort_cmd_ring(xhci);
 		if (unlikely(ret == -ESHUTDOWN)) {
 			xhci_err(xhci, "Abort command ring failed\n");
 			xhci_cleanup_command_queue(xhci);
+			spin_unlock_irqrestore(&xhci->lock, flags);
 			usb_hc_died(xhci_to_hcd(xhci)->primary_hcd);
 			xhci_dbg(xhci, "xHCI host controller is dead.\n");
+
+			return;
 		}
-		return;
+
+		goto time_out_completed;
 	}
 
 	/* command ring failed to restart, or host removed. Bail out */
 	if (second_timeout || xhci->xhc_state & XHCI_STATE_REMOVING) {
-		spin_unlock_irqrestore(&xhci->lock, flags);
 		xhci_dbg(xhci, "command timed out twice, ring start fail?\n");
 		xhci_cleanup_command_queue(xhci);
-		return;
+
+		goto time_out_completed;
 	}
 
 	/* command timeout on stopped ring, ring can't be aborted */
 	xhci_dbg(xhci, "Command timeout on stopped ring\n");
 	xhci_handle_stopped_cmd_ring(xhci, xhci->current_cmd);
+
+time_out_completed:
 	spin_unlock_irqrestore(&xhci->lock, flags);
 	return;
 }

[toc] | [prev] | [next] | [standalone]


#1555595 — [PATCH 4.4 051/101] usb: musb: Fix trying to free already-free IRQ 4

FromGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Date2017-01-10 16:20 +0100
Subject[PATCH 4.4 051/101] usb: musb: Fix trying to free already-free IRQ 4
Message-ID<sY6no-2ZC-41@gated-at.bofh.it>
In reply to#1555588
4.4-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Tony Lindgren <tony@atomide.com>

commit 8c300fe282fa254ea730c92cb0983e2642dc1fff upstream.

When unloading omap2430, we can get the following splat:

WARNING: CPU: 1 PID: 295 at kernel/irq/manage.c:1478 __free_irq+0xa8/0x2c8
Trying to free already-free IRQ 4
...
[<c01a8b78>] (free_irq) from [<bf0aea84>]
(musbhs_dma_controller_destroy+0x28/0xb0 [musb_hdrc])
[<bf0aea84>] (musbhs_dma_controller_destroy [musb_hdrc]) from
[<bf09f88c>] (musb_remove+0xf0/0x12c [musb_hdrc])
[<bf09f88c>] (musb_remove [musb_hdrc]) from [<c056a384>]
(platform_drv_remove+0x24/0x3c)
...

This is because the irq number in use is 260 nowadays, and the dma
controller is using u8 instead of int.

Fixes: 6995eb68aab7 ("USB: musb: enable low level DMA operation for Blackfin")
Signed-off-by: Tony Lindgren <tony@atomide.com>
[b-liu@ti.com: added Fixes tag]
Signed-off-by: Bin Liu <b-liu@ti.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/usb/musb/musbhsdma.h |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- a/drivers/usb/musb/musbhsdma.h
+++ b/drivers/usb/musb/musbhsdma.h
@@ -157,5 +157,5 @@ struct musb_dma_controller {
 	void __iomem			*base;
 	u8				channel_count;
 	u8				used_channels;
-	u8				irq;
+	int				irq;
 };

[toc] | [prev] | [next] | [standalone]


#1555597 — [PATCH 4.4 055/101] USB: serial: kl5kusb105: abort on open exception path

FromGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Date2017-01-10 16:20 +0100
Subject[PATCH 4.4 055/101] USB: serial: kl5kusb105: abort on open exception path
Message-ID<sY6no-2ZC-45@gated-at.bofh.it>
In reply to#1555588
4.4-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Pan Bian <bianpan2016@163.com>

commit 3c3dd1e058cb01e835dcade4b54a6f13ffaeaf7c upstream.

Function klsi_105_open() calls usb_control_msg() (to "enable read") and
checks its return value. When the return value is unexpected, it only
assigns the error code to the return variable retval, but does not
terminate the exception path. This patch fixes the bug by inserting
"goto err_generic_close;" when the call to usb_control_msg() fails.

Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
Signed-off-by: Pan Bian <bianpan2016@163.com>
[johan: rebase on prerequisite fix and amend commit message]
Signed-off-by: Johan Hovold <johan@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/usb/serial/kl5kusb105.c |    2 ++
 1 file changed, 2 insertions(+)

--- a/drivers/usb/serial/kl5kusb105.c
+++ b/drivers/usb/serial/kl5kusb105.c
@@ -311,6 +311,7 @@ static int  klsi_105_open(struct tty_str
 	if (rc < 0) {
 		dev_err(&port->dev, "Enabling read failed (error = %d)\n", rc);
 		retval = rc;
+		goto err_generic_close;
 	} else
 		dev_dbg(&port->dev, "%s - enabled reading\n", __func__);
 
@@ -337,6 +338,7 @@ err_disable_read:
 			     0, /* index */
 			     NULL, 0,
 			     KLSI_TIMEOUT);
+err_generic_close:
 	usb_serial_generic_close(port);
 err_free_cfg:
 	kfree(cfg);

[toc] | [prev] | [next] | [standalone]


#1555599 — [PATCH 4.4 043/101] USB: serial: mos7720: fix NULL-deref at open

FromGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Date2017-01-10 16:20 +0100
Subject[PATCH 4.4 043/101] USB: serial: mos7720: fix NULL-deref at open
Message-ID<sY6no-2ZC-55@gated-at.bofh.it>
In reply to#1555588
4.4-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Johan Hovold <johan@kernel.org>

commit b05aebc25fdc5aeeac3ee29f0dc9f58dd07c13cc upstream.

Fix NULL-pointer dereference at port open if a device lacks the expected
bulk in and out endpoints.

Unable to handle kernel NULL pointer dereference at virtual address 00000030
...
[<bf071c20>] (mos7720_open [mos7720]) from [<bf0490e0>] (serial_port_activate+0x68/0x98 [usbserial])
[<bf0490e0>] (serial_port_activate [usbserial]) from [<c0470ca4>] (tty_port_open+0x9c/0xe8)
[<c0470ca4>] (tty_port_open) from [<bf049d98>] (serial_open+0x48/0x6c [usbserial])
[<bf049d98>] (serial_open [usbserial]) from [<c0469178>] (tty_open+0xcc/0x5cc)

Fixes: 0f64478cbc7a ("USB: add USB serial mos7720 driver")
Signed-off-by: Johan Hovold <johan@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/usb/serial/mos7720.c |    5 +++++
 1 file changed, 5 insertions(+)

--- a/drivers/usb/serial/mos7720.c
+++ b/drivers/usb/serial/mos7720.c
@@ -1920,6 +1920,11 @@ static int mos7720_startup(struct usb_se
 	u16 product;
 	int ret_val;
 
+	if (serial->num_bulk_in < 2 || serial->num_bulk_out < 2) {
+		dev_err(&serial->interface->dev, "missing bulk endpoints\n");
+		return -ENODEV;
+	}
+
 	product = le16_to_cpu(serial->dev->descriptor.idProduct);
 	dev = serial->dev;
 

[toc] | [prev] | [next] | [standalone]


#1555601 — [PATCH 4.4 020/101] xhci: workaround for hosts missing CAS bit

FromGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Date2017-01-10 16:20 +0100
Subject[PATCH 4.4 020/101] xhci: workaround for hosts missing CAS bit
Message-ID<sY6no-2ZC-49@gated-at.bofh.it>
In reply to#1555588
4.4-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Mathias Nyman <mathias.nyman@linux.intel.com>

commit 346e99736c3ce328fd42d678343b70243aca5f36 upstream.

If a device is unplugged and replugged during Sx system suspend
some  Intel xHC hosts will overwrite the CAS (Cold attach status) flag
and no device connection is noticed in resume.

A device in this state can be identified in resume if its link state
is in polling or compliance mode, and the current connect status is 0.
A device in this state needs to be warm reset.

Intel 100/c230 series PCH specification update Doc #332692-006 Errata #8

Observed on Cherryview and Apollolake as they go into compliance mode
if LFPS times out during polling, and re-plugged devices are not
discovered at resume.

Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/usb/host/xhci-hub.c |   37 +++++++++++++++++++++++++++++++++++++
 drivers/usb/host/xhci-pci.c |    6 ++++++
 drivers/usb/host/xhci.h     |    3 +++
 3 files changed, 46 insertions(+)

--- a/drivers/usb/host/xhci-hub.c
+++ b/drivers/usb/host/xhci-hub.c
@@ -1346,6 +1346,35 @@ int xhci_bus_suspend(struct usb_hcd *hcd
 	return 0;
 }
 
+/*
+ * Workaround for missing Cold Attach Status (CAS) if device re-plugged in S3.
+ * warm reset a USB3 device stuck in polling or compliance mode after resume.
+ * See Intel 100/c230 series PCH specification update Doc #332692-006 Errata #8
+ */
+static bool xhci_port_missing_cas_quirk(int port_index,
+					     __le32 __iomem **port_array)
+{
+	u32 portsc;
+
+	portsc = readl(port_array[port_index]);
+
+	/* if any of these are set we are not stuck */
+	if (portsc & (PORT_CONNECT | PORT_CAS))
+		return false;
+
+	if (((portsc & PORT_PLS_MASK) != XDEV_POLLING) &&
+	    ((portsc & PORT_PLS_MASK) != XDEV_COMP_MODE))
+		return false;
+
+	/* clear wakeup/change bits, and do a warm port reset */
+	portsc &= ~(PORT_RWC_BITS | PORT_CEC | PORT_WAKE_BITS);
+	portsc |= PORT_WR;
+	writel(portsc, port_array[port_index]);
+	/* flush write */
+	readl(port_array[port_index]);
+	return true;
+}
+
 int xhci_bus_resume(struct usb_hcd *hcd)
 {
 	struct xhci_hcd	*xhci = hcd_to_xhci(hcd);
@@ -1383,6 +1412,14 @@ int xhci_bus_resume(struct usb_hcd *hcd)
 		u32 temp;
 
 		temp = readl(port_array[port_index]);
+
+		/* warm reset CAS limited ports stuck in polling/compliance */
+		if ((xhci->quirks & XHCI_MISSING_CAS) &&
+		    (hcd->speed >= HCD_USB3) &&
+		    xhci_port_missing_cas_quirk(port_index, port_array)) {
+			xhci_dbg(xhci, "reset stuck port %d\n", port_index);
+			continue;
+		}
 		if (DEV_SUPERSPEED_ANY(temp))
 			temp &= ~(PORT_RWC_BITS | PORT_CEC | PORT_WAKE_BITS);
 		else
--- a/drivers/usb/host/xhci-pci.c
+++ b/drivers/usb/host/xhci-pci.c
@@ -51,6 +51,7 @@
 #define PCI_DEVICE_ID_INTEL_SUNRISEPOINT_LP_XHCI	0x9d2f
 #define PCI_DEVICE_ID_INTEL_BROXTON_M_XHCI		0x0aa8
 #define PCI_DEVICE_ID_INTEL_BROXTON_B_XHCI		0x1aa8
+#define PCI_DEVICE_ID_INTEL_APL_XHCI			0x5aa8
 
 static const char hcd_name[] = "xhci_hcd";
 
@@ -168,6 +169,11 @@ static void xhci_pci_quirks(struct devic
 		 pdev->device == PCI_DEVICE_ID_INTEL_BROXTON_B_XHCI)) {
 		xhci->quirks |= XHCI_PME_STUCK_QUIRK;
 	}
+	if (pdev->vendor == PCI_VENDOR_ID_INTEL &&
+	    (pdev->device == PCI_DEVICE_ID_INTEL_CHERRYVIEW_XHCI ||
+	     pdev->device == PCI_DEVICE_ID_INTEL_APL_XHCI))
+		xhci->quirks |= XHCI_MISSING_CAS;
+
 	if (pdev->vendor == PCI_VENDOR_ID_ETRON &&
 			pdev->device == PCI_DEVICE_ID_EJ168) {
 		xhci->quirks |= XHCI_RESET_ON_RESUME;
--- a/drivers/usb/host/xhci.h
+++ b/drivers/usb/host/xhci.h
@@ -312,6 +312,8 @@ struct xhci_op_regs {
 #define XDEV_U2		(0x2 << 5)
 #define XDEV_U3		(0x3 << 5)
 #define XDEV_INACTIVE	(0x6 << 5)
+#define XDEV_POLLING	(0x7 << 5)
+#define XDEV_COMP_MODE  (0xa << 5)
 #define XDEV_RESUME	(0xf << 5)
 /* true: port has power (see HCC_PPC) */
 #define PORT_POWER	(1 << 9)
@@ -1631,6 +1633,7 @@ struct xhci_hcd {
 /* For controllers with a broken beyond repair streams implementation */
 #define XHCI_BROKEN_STREAMS	(1 << 19)
 #define XHCI_PME_STUCK_QUIRK	(1 << 20)
+#define XHCI_MISSING_CAS	(1 << 24)
 	unsigned int		num_active_eps;
 	unsigned int		limit_active_eps;
 	/* There are two roothubs to keep track of bus suspend info for */

[toc] | [prev] | [next] | [standalone]


#1555602 — [PATCH 4.4 056/101] ARM: dts: r8a7794: Correct hsusb parent clock

FromGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Date2017-01-10 16:20 +0100
Subject[PATCH 4.4 056/101] ARM: dts: r8a7794: Correct hsusb parent clock
Message-ID<sY6no-2ZC-59@gated-at.bofh.it>
In reply to#1555588
4.4-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Geert Uytterhoeven <geert+renesas@glider.be>

commit dc8ee9dbdba509fb58e23ba79f2e6059fe5d8b3b upstream.

The parent clock of the HSUSB clock is the HP clock, not the MP clock.

Fixes: c7bab9f929e51761 ("ARM: shmobile: r8a7794: Add USB clocks to device tree")
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Acked-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Signed-off-by: Simon Horman <horms+renesas@verge.net.au>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 arch/arm/boot/dts/r8a7794.dtsi |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- a/arch/arm/boot/dts/r8a7794.dtsi
+++ b/arch/arm/boot/dts/r8a7794.dtsi
@@ -1023,7 +1023,7 @@
 		mstp7_clks: mstp7_clks@e615014c {
 			compatible = "renesas,r8a7794-mstp-clocks", "renesas,cpg-mstp-clocks";
 			reg = <0 0xe615014c 0 4>, <0 0xe61501c4 0 4>;
-			clocks = <&mp_clk>, <&mp_clk>,
+			clocks = <&mp_clk>, <&hp_clk>,
 				 <&zs_clk>, <&p_clk>, <&p_clk>, <&zs_clk>,
 				 <&zs_clk>, <&p_clk>, <&p_clk>, <&p_clk>, <&p_clk>;
 			#clock-cells = <1>;

[toc] | [prev] | [next] | [standalone]


#1555603 — [PATCH 4.4 005/101] mac80211: initialize fast-xmit info later

FromGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Date2017-01-10 16:20 +0100
Subject[PATCH 4.4 005/101] mac80211: initialize fast-xmit info later
Message-ID<sY6no-2ZC-61@gated-at.bofh.it>
In reply to#1555588
4.4-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Johannes Berg <johannes.berg@intel.com>

commit 35f432a03e41d3bf08c51ede917f94e2288fbe8c upstream.

In ieee80211_xmit_fast(), 'info' is initialized to point to the skb
that's passed in, but that skb may later be replaced by a clone (if
it was shared), leading to an invalid pointer.

This can lead to use-after-free and also later crashes since the
real SKB's info->hw_queue doesn't get initialized properly.

Fix this by assigning info only later, when it's needed, after the
skb replacement (may have) happened.

Reported-by: Ben Greear <greearb@candelatech.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 net/mac80211/tx.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

--- a/net/mac80211/tx.c
+++ b/net/mac80211/tx.c
@@ -2699,7 +2699,7 @@ static bool ieee80211_xmit_fast(struct i
 	int extra_head = fast_tx->hdr_len - (ETH_HLEN - 2);
 	int hw_headroom = sdata->local->hw.extra_tx_headroom;
 	struct ethhdr eth;
-	struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb);
+	struct ieee80211_tx_info *info;
 	struct ieee80211_hdr *hdr = (void *)fast_tx->hdr;
 	struct ieee80211_tx_data tx;
 	ieee80211_tx_result r;
@@ -2761,6 +2761,7 @@ static bool ieee80211_xmit_fast(struct i
 	memcpy(skb->data + fast_tx->da_offs, eth.h_dest, ETH_ALEN);
 	memcpy(skb->data + fast_tx->sa_offs, eth.h_source, ETH_ALEN);
 
+	info = IEEE80211_SKB_CB(skb);
 	memset(info, 0, sizeof(*info));
 	info->band = fast_tx->band;
 	info->control.vif = &sdata->vif;

[toc] | [prev] | [next] | [standalone]


#1555604 — [PATCH 4.4 003/101] ALSA: usb-audio: Fix irq/process data synchronization

FromGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Date2017-01-10 16:20 +0100
Subject[PATCH 4.4 003/101] ALSA: usb-audio: Fix irq/process data synchronization
Message-ID<sY6no-2ZC-63@gated-at.bofh.it>
In reply to#1555588
4.4-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Ioan-Adrian Ratiu <adi@adirat.com>

commit 1d0f953086f090a022f2c0e1448300c15372db46 upstream.

Commit 16200948d83 ("ALSA: usb-audio: Fix race at stopping the stream") was
incomplete causing another more severe kernel panic, so it got reverted.
This fixes both the original problem and its fallout kernel race/crash.

The original fix is to move the endpoint member NULL clearing logic inside
wait_clear_urbs() so the irq triggering the urb completion doesn't call
retire_capture/playback_urb() after the NULL clearing and generate a panic.

However this creates a new race between snd_usb_endpoint_start()'s call
to wait_clear_urbs() and the irq urb completion handler which again calls
retire_capture/playback_urb() leading to a new NULL dereference.

We keep the EP deactivation code in snd_usb_endpoint_start() because
removing it will break the EP reference counting (see [1] [2] for info),
however we don't need the "can_sleep" mechanism anymore because a new
function was introduced (snd_usb_endpoint_sync_pending_stop()) which
synchronizes pending stops and gets called inside the pcm prepare callback.

It also makes sense to remove can_sleep because it was also removed from
deactivate_urbs() signature in [3] so we benefit from more simplification.

[1] commit 015618b90 ("ALSA: snd-usb: Fix URB cancellation at stream start")
[2] commit e9ba389c5 ("ALSA: usb-audio: Fix scheduling-while-atomic bug in PCM capture stream")
[3] commit ccc1696d5 ("ALSA: usb-audio: simplify endpoint deactivation code")

Fixes: f8114f8583bb ("Revert "ALSA: usb-audio: Fix race at stopping the stream"")

Signed-off-by: Ioan-Adrian Ratiu <adi@adirat.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 sound/usb/endpoint.c |   17 +++++++----------
 sound/usb/endpoint.h |    2 +-
 sound/usb/pcm.c      |   10 +++++-----
 3 files changed, 13 insertions(+), 16 deletions(-)

--- a/sound/usb/endpoint.c
+++ b/sound/usb/endpoint.c
@@ -538,6 +538,11 @@ static int wait_clear_urbs(struct snd_us
 			alive, ep->ep_num);
 	clear_bit(EP_FLAG_STOPPING, &ep->flags);
 
+	ep->data_subs = NULL;
+	ep->sync_slave = NULL;
+	ep->retire_data_urb = NULL;
+	ep->prepare_data_urb = NULL;
+
 	return 0;
 }
 
@@ -902,9 +907,7 @@ int snd_usb_endpoint_set_params(struct s
 /**
  * snd_usb_endpoint_start: start an snd_usb_endpoint
  *
- * @ep:		the endpoint to start
- * @can_sleep:	flag indicating whether the operation is executed in
- * 		non-atomic context
+ * @ep: the endpoint to start
  *
  * A call to this function will increment the use count of the endpoint.
  * In case it is not already running, the URBs for this endpoint will be
@@ -914,7 +917,7 @@ int snd_usb_endpoint_set_params(struct s
  *
  * Returns an error if the URB submission failed, 0 in all other cases.
  */
-int snd_usb_endpoint_start(struct snd_usb_endpoint *ep, bool can_sleep)
+int snd_usb_endpoint_start(struct snd_usb_endpoint *ep)
 {
 	int err;
 	unsigned int i;
@@ -928,8 +931,6 @@ int snd_usb_endpoint_start(struct snd_us
 
 	/* just to be sure */
 	deactivate_urbs(ep, false);
-	if (can_sleep)
-		wait_clear_urbs(ep);
 
 	ep->active_mask = 0;
 	ep->unlink_mask = 0;
@@ -1010,10 +1011,6 @@ void snd_usb_endpoint_stop(struct snd_us
 
 	if (--ep->use_count == 0) {
 		deactivate_urbs(ep, false);
-		ep->data_subs = NULL;
-		ep->sync_slave = NULL;
-		ep->retire_data_urb = NULL;
-		ep->prepare_data_urb = NULL;
 		set_bit(EP_FLAG_STOPPING, &ep->flags);
 	}
 }
--- a/sound/usb/endpoint.h
+++ b/sound/usb/endpoint.h
@@ -18,7 +18,7 @@ int snd_usb_endpoint_set_params(struct s
 				struct audioformat *fmt,
 				struct snd_usb_endpoint *sync_ep);
 
-int  snd_usb_endpoint_start(struct snd_usb_endpoint *ep, bool can_sleep);
+int  snd_usb_endpoint_start(struct snd_usb_endpoint *ep);
 void snd_usb_endpoint_stop(struct snd_usb_endpoint *ep);
 void snd_usb_endpoint_sync_pending_stop(struct snd_usb_endpoint *ep);
 int  snd_usb_endpoint_activate(struct snd_usb_endpoint *ep);
--- a/sound/usb/pcm.c
+++ b/sound/usb/pcm.c
@@ -218,7 +218,7 @@ int snd_usb_init_pitch(struct snd_usb_au
 	}
 }
 
-static int start_endpoints(struct snd_usb_substream *subs, bool can_sleep)
+static int start_endpoints(struct snd_usb_substream *subs)
 {
 	int err;
 
@@ -231,7 +231,7 @@ static int start_endpoints(struct snd_us
 		dev_dbg(&subs->dev->dev, "Starting data EP @%p\n", ep);
 
 		ep->data_subs = subs;
-		err = snd_usb_endpoint_start(ep, can_sleep);
+		err = snd_usb_endpoint_start(ep);
 		if (err < 0) {
 			clear_bit(SUBSTREAM_FLAG_DATA_EP_STARTED, &subs->flags);
 			return err;
@@ -260,7 +260,7 @@ static int start_endpoints(struct snd_us
 		dev_dbg(&subs->dev->dev, "Starting sync EP @%p\n", ep);
 
 		ep->sync_slave = subs->data_endpoint;
-		err = snd_usb_endpoint_start(ep, can_sleep);
+		err = snd_usb_endpoint_start(ep);
 		if (err < 0) {
 			clear_bit(SUBSTREAM_FLAG_SYNC_EP_STARTED, &subs->flags);
 			return err;
@@ -839,7 +839,7 @@ static int snd_usb_pcm_prepare(struct sn
 	/* for playback, submit the URBs now; otherwise, the first hwptr_done
 	 * updates for all URBs would happen at the same time when starting */
 	if (subs->direction == SNDRV_PCM_STREAM_PLAYBACK)
-		ret = start_endpoints(subs, true);
+		ret = start_endpoints(subs);
 
  unlock:
 	snd_usb_unlock_shutdown(subs->stream->chip);
@@ -1655,7 +1655,7 @@ static int snd_usb_substream_capture_tri
 
 	switch (cmd) {
 	case SNDRV_PCM_TRIGGER_START:
-		err = start_endpoints(subs, false);
+		err = start_endpoints(subs);
 		if (err < 0)
 			return err;
 

[toc] | [prev] | [next] | [standalone]


#1555605 — [PATCH 4.4 013/101] USB: gadgetfs: fix use-after-free bug

FromGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Date2017-01-10 16:30 +0100
Subject[PATCH 4.4 013/101] USB: gadgetfs: fix use-after-free bug
Message-ID<sY6x3-32R-5@gated-at.bofh.it>
In reply to#1555588
4.4-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Alan Stern <stern@rowland.harvard.edu>

commit add333a81a16abbd4f106266a2553677a165725f upstream.

Andrey Konovalov reports that fuzz testing with syzkaller causes a
KASAN use-after-free bug report in gadgetfs:

BUG: KASAN: use-after-free in gadgetfs_setup+0x208a/0x20e0 at addr ffff88003dfe5bf2
Read of size 2 by task syz-executor0/22994
CPU: 3 PID: 22994 Comm: syz-executor0 Not tainted 4.9.0-rc7+ #16
Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011
 ffff88006df06a18 ffffffff81f96aba ffffffffe0528500 1ffff1000dbe0cd6
 ffffed000dbe0cce ffff88006df068f0 0000000041b58ab3 ffffffff8598b4c8
 ffffffff81f96828 1ffff1000dbe0ccd ffff88006df06708 ffff88006df06748
Call Trace:
 <IRQ> [  201.343209]  [<     inline     >] __dump_stack lib/dump_stack.c:15
 <IRQ> [  201.343209]  [<ffffffff81f96aba>] dump_stack+0x292/0x398 lib/dump_stack.c:51
 [<ffffffff817e4dec>] kasan_object_err+0x1c/0x70 mm/kasan/report.c:159
 [<     inline     >] print_address_description mm/kasan/report.c:197
 [<ffffffff817e5080>] kasan_report_error+0x1f0/0x4e0 mm/kasan/report.c:286
 [<     inline     >] kasan_report mm/kasan/report.c:306
 [<ffffffff817e562a>] __asan_report_load_n_noabort+0x3a/0x40 mm/kasan/report.c:337
 [<     inline     >] config_buf drivers/usb/gadget/legacy/inode.c:1298
 [<ffffffff8322c8fa>] gadgetfs_setup+0x208a/0x20e0 drivers/usb/gadget/legacy/inode.c:1368
 [<ffffffff830fdcd0>] dummy_timer+0x11f0/0x36d0 drivers/usb/gadget/udc/dummy_hcd.c:1858
 [<ffffffff814807c1>] call_timer_fn+0x241/0x800 kernel/time/timer.c:1308
 [<     inline     >] expire_timers kernel/time/timer.c:1348
 [<ffffffff81482de6>] __run_timers+0xa06/0xec0 kernel/time/timer.c:1641
 [<ffffffff814832c1>] run_timer_softirq+0x21/0x80 kernel/time/timer.c:1654
 [<ffffffff84f4af8b>] __do_softirq+0x2fb/0xb63 kernel/softirq.c:284

The cause of the bug is subtle.  The dev_config() routine gets called
twice by the fuzzer.  The first time, the user data contains both a
full-speed configuration descriptor and a high-speed config
descriptor, causing dev->hs_config to be set.  But it also contains an
invalid device descriptor, so the buffer containing the descriptors is
deallocated and dev_config() returns an error.

The second time dev_config() is called, the user data contains only a
full-speed config descriptor.  But dev->hs_config still has the stale
pointer remaining from the first call, causing the routine to think
that there is a valid high-speed config.  Later on, when the driver
dereferences the stale pointer to copy that descriptor, we get a
use-after-free access.

The fix is simple: Clear dev->hs_config if the passed-in data does not
contain a high-speed config descriptor.

Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
Reported-by: Andrey Konovalov <andreyknvl@google.com>
Tested-by: Andrey Konovalov <andreyknvl@google.com>
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/usb/gadget/legacy/inode.c |    2 ++
 1 file changed, 2 insertions(+)

--- a/drivers/usb/gadget/legacy/inode.c
+++ b/drivers/usb/gadget/legacy/inode.c
@@ -1821,6 +1821,8 @@ dev_config (struct file *fd, const char
 			goto fail;
 		kbuf += total;
 		length -= total;
+	} else {
+		dev->hs_config = NULL;
 	}
 
 	/* could support multiple configs, using another encoding! */

[toc] | [prev] | [next] | [standalone]


#1555611 — [PATCH 4.4 014/101] USB: gadgetfs: fix checks of wTotalLength in config descriptors

FromGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Date2017-01-10 16:30 +0100
Subject[PATCH 4.4 014/101] USB: gadgetfs: fix checks of wTotalLength in config descriptors
Message-ID<sY6x3-32R-27@gated-at.bofh.it>
In reply to#1555588
4.4-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Alan Stern <stern@rowland.harvard.edu>

commit 1c069b057dcf64fada952eaa868d35f02bb0cfc2 upstream.

Andrey Konovalov's fuzz testing of gadgetfs showed that we should
improve the driver's checks for valid configuration descriptors passed
in by the user.  In particular, the driver needs to verify that the
wTotalLength value in the descriptor is not too short (smaller
than USB_DT_CONFIG_SIZE).  And the check for whether wTotalLength is
too large has to be changed, because the driver assumes there is
always enough room remaining in the buffer to hold a device descriptor
(at least USB_DT_DEVICE_SIZE bytes).

This patch adds the additional check and fixes the existing check.  It
may do a little more than strictly necessary, but one extra check
won't hurt.

Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
CC: Andrey Konovalov <andreyknvl@google.com>
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/usb/gadget/legacy/inode.c |   10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

--- a/drivers/usb/gadget/legacy/inode.c
+++ b/drivers/usb/gadget/legacy/inode.c
@@ -1755,10 +1755,12 @@ static struct usb_gadget_driver probe_dr
  * such as configuration notifications.
  */
 
-static int is_valid_config (struct usb_config_descriptor *config)
+static int is_valid_config(struct usb_config_descriptor *config,
+		unsigned int total)
 {
 	return config->bDescriptorType == USB_DT_CONFIG
 		&& config->bLength == USB_DT_CONFIG_SIZE
+		&& total >= USB_DT_CONFIG_SIZE
 		&& config->bConfigurationValue != 0
 		&& (config->bmAttributes & USB_CONFIG_ATT_ONE) != 0
 		&& (config->bmAttributes & USB_CONFIG_ATT_WAKEUP) == 0;
@@ -1808,7 +1810,8 @@ dev_config (struct file *fd, const char
 	/* full or low speed config */
 	dev->config = (void *) kbuf;
 	total = le16_to_cpu(dev->config->wTotalLength);
-	if (!is_valid_config (dev->config) || total >= length)
+	if (!is_valid_config(dev->config, total) ||
+			total > length - USB_DT_DEVICE_SIZE)
 		goto fail;
 	kbuf += total;
 	length -= total;
@@ -1817,7 +1820,8 @@ dev_config (struct file *fd, const char
 	if (kbuf [1] == USB_DT_CONFIG) {
 		dev->hs_config = (void *) kbuf;
 		total = le16_to_cpu(dev->hs_config->wTotalLength);
-		if (!is_valid_config (dev->hs_config) || total >= length)
+		if (!is_valid_config(dev->hs_config, total) ||
+				total > length - USB_DT_DEVICE_SIZE)
 			goto fail;
 		kbuf += total;
 		length -= total;

[toc] | [prev] | [next] | [standalone]


#1555612 — [PATCH 4.4 019/101] usb: xhci: fix possible wild pointer

FromGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Date2017-01-10 16:30 +0100
Subject[PATCH 4.4 019/101] usb: xhci: fix possible wild pointer
Message-ID<sY6x3-32R-13@gated-at.bofh.it>
In reply to#1555588
4.4-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Lu Baolu <baolu.lu@linux.intel.com>

commit 2b985467371a58ae44d76c7ba12b0951fee6ed98 upstream.

handle_cmd_completion() frees a command structure which might be still
referenced by xhci->current_cmd.
This might cause problem when xhci->current_cmd is accessed after that.

A real-life case could be like this. The host takes a very long time to
respond to a command, and the command timer is fired at the same time
when the command completion event arrives. The command completion
handler frees xhci->current_cmd before the timer function can grab
xhci->lock. Afterward, timer function grabs the lock and go ahead with
checking and setting members of xhci->current_cmd.

Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com>
Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/usb/host/xhci-ring.c |   16 +++++++++++-----
 1 file changed, 11 insertions(+), 5 deletions(-)

--- a/drivers/usb/host/xhci-ring.c
+++ b/drivers/usb/host/xhci-ring.c
@@ -1268,14 +1268,18 @@ void xhci_handle_command_timeout(unsigne
 	bool second_timeout = false;
 	xhci = (struct xhci_hcd *) data;
 
-	/* mark this command to be cancelled */
 	spin_lock_irqsave(&xhci->lock, flags);
-	if (xhci->current_cmd) {
-		if (xhci->current_cmd->status == COMP_CMD_ABORT)
-			second_timeout = true;
-		xhci->current_cmd->status = COMP_CMD_ABORT;
+
+	if (!xhci->current_cmd) {
+		spin_unlock_irqrestore(&xhci->lock, flags);
+		return;
 	}
 
+	/* mark this command to be cancelled */
+	if (xhci->current_cmd->status == COMP_CMD_ABORT)
+		second_timeout = true;
+	xhci->current_cmd->status = COMP_CMD_ABORT;
+
 	/* Make sure command ring is running before aborting it */
 	hw_ring_state = xhci_read_64(xhci, &xhci->op_regs->cmd_ring);
 	if ((xhci->cmd_ring_state & CMD_RING_STATE_RUNNING) &&
@@ -1424,6 +1428,8 @@ static void handle_cmd_completion(struct
 		xhci->current_cmd = list_entry(cmd->cmd_list.next,
 					       struct xhci_command, cmd_list);
 		mod_timer(&xhci->cmd_timer, jiffies + XHCI_CMD_DEFAULT_TIMEOUT);
+	} else if (xhci->current_cmd == cmd) {
+		xhci->current_cmd = NULL;
 	}
 
 event_handled:

[toc] | [prev] | [next] | [standalone]


#1555613 — [PATCH 4.4 001/101] ALSA: hda - Fix up GPIO for ASUS ROG Ranger

FromGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Date2017-01-10 16:30 +0100
Subject[PATCH 4.4 001/101] ALSA: hda - Fix up GPIO for ASUS ROG Ranger
Message-ID<sY6x3-32R-17@gated-at.bofh.it>
In reply to#1555588
4.4-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Takashi Iwai <tiwai@suse.de>

commit 85bcf96caba8b4a7c0805555638629ba3c67ea0c upstream.

ASUS ROG Ranger VIII with ALC1150 codec requires the extra GPIO pin to
up for the front panel.  Just use the existing fixup for setting up
the GPIO pins.

Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=189411
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 sound/pci/hda/patch_realtek.c |    1 +
 1 file changed, 1 insertion(+)

--- a/sound/pci/hda/patch_realtek.c
+++ b/sound/pci/hda/patch_realtek.c
@@ -2230,6 +2230,7 @@ static const struct snd_pci_quirk alc882
 	SND_PCI_QUIRK(0x1043, 0x1971, "Asus W2JC", ALC882_FIXUP_ASUS_W2JC),
 	SND_PCI_QUIRK(0x1043, 0x835f, "Asus Eee 1601", ALC888_FIXUP_EEE1601),
 	SND_PCI_QUIRK(0x1043, 0x84bc, "ASUS ET2700", ALC887_FIXUP_ASUS_BASS),
+	SND_PCI_QUIRK(0x1043, 0x8691, "ASUS ROG Ranger VIII", ALC882_FIXUP_GPIO3),
 	SND_PCI_QUIRK(0x104d, 0x9047, "Sony Vaio TT", ALC889_FIXUP_VAIO_TT),
 	SND_PCI_QUIRK(0x104d, 0x905a, "Sony Vaio Z", ALC882_FIXUP_NO_PRIMARY_HP),
 	SND_PCI_QUIRK(0x104d, 0x9043, "Sony Vaio VGC-LN51JGB", ALC882_FIXUP_NO_PRIMARY_HP),

[toc] | [prev] | [next] | [standalone]


#1555616 — [PATCH 4.4 018/101] usb: dwc3: core: avoid Overflow events

FromGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Date2017-01-10 16:30 +0100
Subject[PATCH 4.4 018/101] usb: dwc3: core: avoid Overflow events
Message-ID<sY6x4-32R-45@gated-at.bofh.it>
In reply to#1555588
4.4-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Felipe Balbi <felipe.balbi@linux.intel.com>

commit e71d363d9c611c99fb78f53bfee99616e7fe352c upstream.

Now that we're handling so many transfers at a time
and for some dwc3 revisions LPM events *must* be
enabled, we can fall into a situation where too many
events fire and we start receiving Overflow events.

Let's do what XHCI does and allocate a full page for
the Event Ring, this will avoid any future issues.

Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/usb/dwc3/core.h |    4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

--- a/drivers/usb/dwc3/core.h
+++ b/drivers/usb/dwc3/core.h
@@ -42,9 +42,7 @@
 #define DWC3_XHCI_RESOURCES_NUM	2
 
 #define DWC3_SCRATCHBUF_SIZE	4096	/* each buffer is assumed to be 4KiB */
-#define DWC3_EVENT_SIZE		4	/* bytes */
-#define DWC3_EVENT_MAX_NUM	64	/* 2 events/endpoint */
-#define DWC3_EVENT_BUFFERS_SIZE	(DWC3_EVENT_SIZE * DWC3_EVENT_MAX_NUM)
+#define DWC3_EVENT_BUFFERS_SIZE	4096
 #define DWC3_EVENT_TYPE_MASK	0xfe
 
 #define DWC3_EVENT_TYPE_DEV	0

[toc] | [prev] | [next] | [standalone]


#1555618 — [PATCH 4.4 011/101] usb: gadgetfs: restrict upper bound on device configuration size

FromGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Date2017-01-10 16:30 +0100
Subject[PATCH 4.4 011/101] usb: gadgetfs: restrict upper bound on device configuration size
Message-ID<sY6x4-32R-39@gated-at.bofh.it>
In reply to#1555588
4.4-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0994b0a257557e18ee8f0b7c5f0f73fe2b54eec1 upstream.

Andrey Konovalov reported that we were not properly checking the upper
limit before of a device configuration size before calling
memdup_user(), which could cause some problems.

So set the upper limit to PAGE_SIZE * 4, which should be good enough for
all devices.

Reported-by: Andrey Konovalov <andreyknvl@google.com>
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/usb/gadget/legacy/inode.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

--- a/drivers/usb/gadget/legacy/inode.c
+++ b/drivers/usb/gadget/legacy/inode.c
@@ -1783,7 +1783,8 @@ dev_config (struct file *fd, const char
 	}
 	spin_unlock_irq(&dev->lock);
 
-	if (len < (USB_DT_CONFIG_SIZE + USB_DT_DEVICE_SIZE + 4))
+	if ((len < (USB_DT_CONFIG_SIZE + USB_DT_DEVICE_SIZE + 4)) ||
+	    (len > PAGE_SIZE * 4))
 		return -EINVAL;
 
 	/* we might need to change message format someday */

[toc] | [prev] | [next] | [standalone]


#1555619 — [PATCH 4.4 015/101] USB: fix problems with duplicate endpoint addresses

FromGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Date2017-01-10 16:30 +0100
Subject[PATCH 4.4 015/101] USB: fix problems with duplicate endpoint addresses
Message-ID<sY6x3-32R-33@gated-at.bofh.it>
In reply to#1555588
4.4-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Alan Stern <stern@rowland.harvard.edu>

commit 0a8fd1346254974c3a852338508e4a4cddbb35f1 upstream.

When checking a new device's descriptors, the USB core does not check
for duplicate endpoint addresses.  This can cause a problem when the
sysfs files for those endpoints are created; trying to create multiple
files with the same name will provoke a WARNING:

WARNING: CPU: 2 PID: 865 at fs/sysfs/dir.c:31 sysfs_warn_dup+0x8a/0xa0
sysfs: cannot create duplicate filename
'/devices/platform/dummy_hcd.0/usb2/2-1/2-1:64.0/ep_05'
Kernel panic - not syncing: panic_on_warn set ...

CPU: 2 PID: 865 Comm: kworker/2:1 Not tainted 4.9.0-rc7+ #34
Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011
Workqueue: usb_hub_wq hub_event
 ffff88006bee64c8 ffffffff81f96b8a ffffffff00000001 1ffff1000d7dcc2c
 ffffed000d7dcc24 0000000000000001 0000000041b58ab3 ffffffff8598b510
 ffffffff81f968f8 ffffffff850fee20 ffffffff85cff020 dffffc0000000000
Call Trace:
 [<     inline     >] __dump_stack lib/dump_stack.c:15
 [<ffffffff81f96b8a>] dump_stack+0x292/0x398 lib/dump_stack.c:51
 [<ffffffff8168c88e>] panic+0x1cb/0x3a9 kernel/panic.c:179
 [<ffffffff812b80b4>] __warn+0x1c4/0x1e0 kernel/panic.c:542
 [<ffffffff812b8195>] warn_slowpath_fmt+0xc5/0x110 kernel/panic.c:565
 [<ffffffff819e70ca>] sysfs_warn_dup+0x8a/0xa0 fs/sysfs/dir.c:30
 [<ffffffff819e7308>] sysfs_create_dir_ns+0x178/0x1d0 fs/sysfs/dir.c:59
 [<     inline     >] create_dir lib/kobject.c:71
 [<ffffffff81fa1b07>] kobject_add_internal+0x227/0xa60 lib/kobject.c:229
 [<     inline     >] kobject_add_varg lib/kobject.c:366
 [<ffffffff81fa2479>] kobject_add+0x139/0x220 lib/kobject.c:411
 [<ffffffff82737a63>] device_add+0x353/0x1660 drivers/base/core.c:1088
 [<ffffffff82738d8d>] device_register+0x1d/0x20 drivers/base/core.c:1206
 [<ffffffff82cb77d3>] usb_create_ep_devs+0x163/0x260 drivers/usb/core/endpoint.c:195
 [<ffffffff82c9f27b>] create_intf_ep_devs+0x13b/0x200 drivers/usb/core/message.c:1030
 [<ffffffff82ca39d3>] usb_set_configuration+0x1083/0x18d0 drivers/usb/core/message.c:1937
 [<ffffffff82cc9e2e>] generic_probe+0x6e/0xe0 drivers/usb/core/generic.c:172
 [<ffffffff82caa7fa>] usb_probe_device+0xaa/0xe0 drivers/usb/core/driver.c:263

This patch prevents the problem by checking for duplicate endpoint
addresses during enumeration and skipping any duplicates.

Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
Reported-by: Andrey Konovalov <andreyknvl@google.com>
Tested-by: Andrey Konovalov <andreyknvl@google.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/usb/core/config.c |   10 ++++++++++
 1 file changed, 10 insertions(+)

--- a/drivers/usb/core/config.c
+++ b/drivers/usb/core/config.c
@@ -205,6 +205,16 @@ static int usb_parse_endpoint(struct dev
 	if (ifp->desc.bNumEndpoints >= num_ep)
 		goto skip_to_next_endpoint_or_interface_descriptor;
 
+	/* Check for duplicate endpoint addresses */
+	for (i = 0; i < ifp->desc.bNumEndpoints; ++i) {
+		if (ifp->endpoint[i].desc.bEndpointAddress ==
+		    d->bEndpointAddress) {
+			dev_warn(ddev, "config %d interface %d altsetting %d has a duplicate endpoint with address 0x%X, skipping\n",
+			    cfgno, inum, asnum, d->bEndpointAddress);
+			goto skip_to_next_endpoint_or_interface_descriptor;
+		}
+	}
+
 	endpoint = &ifp->endpoint[ifp->desc.bNumEndpoints];
 	++ifp->desc.bNumEndpoints;
 

[toc] | [prev] | [next] | [standalone]


#1555739

FromShuah Khan <shuah.kh@samsung.com>
Date2017-01-10 18:40 +0100
Message-ID<sY8yR-4e0-1@gated-at.bofh.it>
In reply to#1555588
On 01/10/2017 06:36 AM, Greg Kroah-Hartman wrote:
> This is the start of the stable review cycle for the 4.4.42 release.
> There are 101 patches in this series, all will be posted as a response
> to this one.  If anyone has any issues with these being applied, please
> let me know.
> 
> Responses should be made by Thu Jan 12 13:15:04 UTC 2017.
> Anything received after that time might be too late.
> 
> The whole patch series can be found in one patch at:
> 	kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.4.42-rc1.gz
> or in the git tree and branch at:
>   git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-4.4.y
> and the diffstat can be found below.
> 
> thanks,
> 
> greg k-h
> 

Compiled and booted on my test system. No dmesg regressions.

thanks,
-- Shuah


-- 
Shuah Khan
Sr. Linux Kernel Developer
Open Source Innovation Group
Samsung Research America(Silicon Valley)
shuah.kh@samsung.com

[toc] | [prev] | [next] | [standalone]


#1555975

FromGuenter Roeck <linux@roeck-us.net>
Date2017-01-10 23:30 +0100
Message-ID<sYd5v-74s-5@gated-at.bofh.it>
In reply to#1555588
On Tue, Jan 10, 2017 at 02:36:13PM +0100, Greg Kroah-Hartman wrote:
> This is the start of the stable review cycle for the 4.4.42 release.
> There are 101 patches in this series, all will be posted as a response
> to this one.  If anyone has any issues with these being applied, please
> let me know.
> 
> Responses should be made by Thu Jan 12 13:15:04 UTC 2017.
> Anything received after that time might be too late.
> 

Build results:
	total: 150 pass: 150 fail: 0
Qemu test results:
	total: 115 pass: 115 fail: 0

Details are available at http://kerneltests.org/builders.

Guenter

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web