1
0
Fork 0
alistair23-linux/drivers
Pawel Laszczak c707e18796 usb: gadget: Fix issue with config_ep_by_speed function
[ Upstream commit 5d363120aa ]

This patch adds new config_ep_by_speed_and_alt function which
extends the config_ep_by_speed about alt parameter.
This additional parameter allows to find proper usb_ss_ep_comp_descriptor.

Problem has appeared during testing f_tcm (BOT/UAS) driver function.

f_tcm function for SS use array of headers for both  BOT/UAS alternate
setting:

static struct usb_descriptor_header *uasp_ss_function_desc[] = {
        (struct usb_descriptor_header *) &bot_intf_desc,
        (struct usb_descriptor_header *) &uasp_ss_bi_desc,
        (struct usb_descriptor_header *) &bot_bi_ep_comp_desc,
        (struct usb_descriptor_header *) &uasp_ss_bo_desc,
        (struct usb_descriptor_header *) &bot_bo_ep_comp_desc,

        (struct usb_descriptor_header *) &uasp_intf_desc,
        (struct usb_descriptor_header *) &uasp_ss_bi_desc,
        (struct usb_descriptor_header *) &uasp_bi_ep_comp_desc,
        (struct usb_descriptor_header *) &uasp_bi_pipe_desc,
        (struct usb_descriptor_header *) &uasp_ss_bo_desc,
        (struct usb_descriptor_header *) &uasp_bo_ep_comp_desc,
        (struct usb_descriptor_header *) &uasp_bo_pipe_desc,
        (struct usb_descriptor_header *) &uasp_ss_status_desc,
        (struct usb_descriptor_header *) &uasp_status_in_ep_comp_desc,
        (struct usb_descriptor_header *) &uasp_status_pipe_desc,
        (struct usb_descriptor_header *) &uasp_ss_cmd_desc,
        (struct usb_descriptor_header *) &uasp_cmd_comp_desc,
        (struct usb_descriptor_header *) &uasp_cmd_pipe_desc,
        NULL,
};

The first 5 descriptors are associated with BOT alternate setting,
and others are associated with UAS.

During handling UAS alternate setting f_tcm driver invokes
config_ep_by_speed and this function sets incorrect companion endpoint
descriptor in usb_ep object.

Instead setting ep->comp_desc to uasp_bi_ep_comp_desc function in this
case set ep->comp_desc to uasp_ss_bi_desc.

This is due to the fact that it searches endpoint based on endpoint
address:

        for_each_ep_desc(speed_desc, d_spd) {
                chosen_desc = (struct usb_endpoint_descriptor *)*d_spd;
                if (chosen_desc->bEndpoitAddress == _ep->address)
                        goto ep_found;
        }

And in result it uses the descriptor from BOT alternate setting
instead UAS.

Finally, it causes that controller driver during enabling endpoints
detect that just enabled endpoint for bot.

Signed-off-by: Jayshri Pawar <jpawar@cadence.com>
Signed-off-by: Pawel Laszczak <pawell@cadence.com>
Signed-off-by: Felipe Balbi <balbi@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2020-06-24 17:50:32 +02:00
..
accessibility
acpi ACPI/IORT: Fix PMCG node single ID mapping handling 2020-06-22 09:30:54 +02:00
amba
android binderfs: use refcount for binder control devices too 2020-03-25 08:25:50 +01:00
ata libata: Return correct status in sata_pmp_eh_recover_pm() when ATA_DFLAG_DETACH is set 2020-04-17 10:50:22 +02:00
atm fore200e: Fix incorrect checks of NULL pointer dereference 2020-02-24 08:36:36 +01:00
auxdisplay
base drivers: base: Fix NULL pointer exception in __platform_driver_probe() if a driver developer is foolish 2020-06-24 17:50:24 +02:00
bcma
block ps3disk: use the default segment boundary 2020-06-24 17:50:15 +02:00
bluetooth Bluetooth: hci_bcm: fix freeing not-requested IRQ 2020-06-22 09:31:18 +02:00
bus bus: sunxi-rsb: Return correct data when mixing 16-bit and 8-bit reads 2020-04-17 10:49:56 +02:00
cdrom cdrom: respect device capabilities during opening action 2020-01-04 19:18:25 +01:00
char ipmi: use vzalloc instead of kmalloc for user creation 2020-06-24 17:50:28 +02:00
clk clk: samsung: exynos5433: Add IGNORE_UNUSED flag to sclk_i2s1 2020-06-24 17:50:30 +02:00
clocksource clocksource: dw_apb_timer_of: Fix missing clockevent timers 2020-06-22 09:30:55 +02:00
connector
counter counter: 104-quad-8: Add lock guards - generic interface 2020-05-02 08:48:44 +02:00
cpufreq cpufreq: Fix up cpufreq_boost_set_sw() 2020-06-17 16:40:33 +02:00
cpuidle cpuidle: Fix three reference count leaks 2020-06-22 09:31:10 +02:00
crypto crypto: stm32/crc32 - fix multi-instance 2020-06-22 09:31:07 +02:00
dax device-dax: don't leak kernel memory to user space after unloading kmem 2020-05-27 17:46:48 +02:00
dca
devfreq PM / devfreq: Add missing locking while setting suspend_freq 2020-05-10 10:31:34 +02:00
dio
dma dmaengine: owl: Use correct lock in owl_dma_get_pchan() 2020-05-27 17:46:43 +02:00
dma-buf dma-buf: Fix SET_NAME ioctl uapi 2020-05-06 08:15:01 +02:00
edac EDAC/amd64: Add AMD family 17h model 60h PCI IDs 2020-06-22 09:31:20 +02:00
eisa
extcon extcon: axp288: Add wakeup support 2020-04-08 09:08:43 +02:00
firewire net: add annotations on hh->hh_len lockless accesses 2020-01-09 10:20:06 +01:00
firmware firmware: imx: scu: Fix possible memory leak in imx_scu_probe() 2020-06-24 17:50:30 +02:00
fpga fpga: dfl: afu: Corrected error handling levels 2020-06-24 17:50:29 +02:00
fsi fsi: core: Fix small accesses and unaligned offsets via sysfs 2019-12-31 16:45:09 +01:00
gnss gnss: sirf: fix error return code in sirf_probe() 2020-06-22 09:31:20 +02:00
gpio gpio: pca953x: fix handling of automatic address incrementing 2020-06-24 17:50:22 +02:00
gpu drm/msm/mdp5: Fix mdp5_init error path for failed mdp5_kms allocation 2020-06-24 17:50:29 +02:00
greybus
hid HID: Add quirks for Trust Panora Graphic Tablet 2020-06-24 17:50:27 +02:00
hsi
hv Drivers: hv: vmbus: Always handle the VMBus messages on CPU0 2020-06-22 09:31:00 +02:00
hwmon hwmon: (k10temp) Add AMD family 17h model 60h PCI match 2020-06-22 09:31:19 +02:00
hwspinlock
hwtracing coresight: tmc: Fix TMC mode read in tmc_read_prepare_etb() 2020-06-24 17:50:15 +02:00
i2c i2c: pxa: fix i2c_pxa_scream_blue_murder() debug output 2020-06-24 17:50:24 +02:00
i3c
ide ide: serverworks: potential overflow in svwks_set_pio_mode() 2020-02-24 08:36:53 +01:00
idle
iio iio: bmp280: fix compensation of humidity 2020-06-24 17:50:12 +02:00
infiniband IB/cma: Fix ports memory leak in cma_configfs 2020-06-24 17:50:32 +02:00
input Input: edt-ft5x06 - fix get_default register write access 2020-06-24 17:50:12 +02:00
interconnect
iommu iommu: Fix reference count leak in iommu_group_alloc. 2020-06-03 08:21:28 +02:00
ipack ipack: tpci200: fix error return code in tpci200_register() 2020-05-27 17:46:47 +02:00
irqchip irqchip/mbigen: Free msi_desc on device teardown 2020-04-23 10:36:20 +02:00
isdn
leds leds: core: Fix warning message when init_data 2020-04-23 10:36:37 +02:00
lightnvm
macintosh drivers/macintosh: Fix memleak in windfarm_pm112 driver 2020-06-22 09:31:22 +02:00
mailbox mailbox: imx: Fix Tx doorbell shutdown path 2020-01-04 19:18:30 +01:00
mcb
md dm zoned: return NULL if dmz_get_zone_for_reclaim() fails to find a zone 2020-06-24 17:50:31 +02:00
media media: ov5640: fix use of destroyed mutex 2020-06-22 09:31:19 +02:00
memory memory: mtk-smi: Add PM suspend and resume ops 2020-01-17 19:48:59 +01:00
memstick
message scsi: mptfusion: Fix double fetch bug in ioctl 2020-01-23 08:22:35 +01:00
mfd mfd: wm8994: Fix driver operation if loaded as modules 2020-06-24 17:50:16 +02:00
misc habanalabs: increase timeout during reset 2020-06-24 17:50:28 +02:00
mmc mmc: sdhci-esdhc-imx: fix the mask for tuning start point 2020-06-22 09:31:10 +02:00
mtd mtd: rawnand: tmio: Fix the probe error path 2020-06-22 09:31:26 +02:00
mux
net net: dsa: lantiq_gswip: fix and improve the unsupported interface error 2020-06-24 17:50:19 +02:00
nfc NFC: st21nfca: add missed kfree_skb() in an error path 2020-06-10 20:24:54 +02:00
ntb NTB: Fix the default port and peer numbers for legacy drivers 2020-06-24 17:50:18 +02:00
nubus
nvdimm libnvdimm: Out of bounds read in __nd_ioctl() 2020-04-23 10:36:42 +02:00
nvme nvme-tcp: use bh_lock in data_ready 2020-06-22 09:31:04 +02:00
nvmem nvmem: qfprom: remove incorrect write support 2020-06-10 20:24:57 +02:00
of of: overlay: kmemleak in dup_and_fixup_symbol_prop() 2020-04-23 10:36:23 +02:00
opp opp: Free static OPPs on errors while adding them 2020-02-24 08:36:34 +01:00
oprofile
parisc
parport parport: load lowlevel driver if ports not found 2019-12-31 16:45:25 +01:00
pci PCI: amlogic: meson: Don't use FAST_LINK_MODE to set up link 2020-06-24 17:50:31 +02:00
pcmcia
perf drivers/perf: hisi: Fix typo in events attribute array 2020-06-22 09:31:01 +02:00
phy drivers: phy: sr-usb: do not use internal fsm for USB2 phy init 2020-06-24 17:50:28 +02:00
pinctrl pinctrl: rockchip: fix memleak in rockchip_dt_node_to_map 2020-06-24 17:50:26 +02:00
platform platform/x86: asus_wmi: Reserve more space for struct bias_args 2020-06-22 09:31:11 +02:00
pnp
power power: supply: smb347-charger: IRQSTAT_D is volatile 2020-06-24 17:50:25 +02:00
powercap powercap: intel_rapl: add NULL pointer check to rapl_mmio_cpu_online() 2020-01-14 20:08:18 +01:00
pps
ps3
ptp ptp: free ptp device pin descriptors properly 2020-01-23 08:22:51 +01:00
pwm pwm: img: Call pm_runtime_put() in pm_runtime_get_sync() failed case 2020-06-24 17:50:18 +02:00
rapidio rapidio: fix an error in get_user_pages_fast() error handling 2020-05-27 17:46:48 +02:00
ras
regulator regulator: qcom-rpmh: Fix typos in pm8150 and pm8150l 2020-06-22 09:30:58 +02:00
remoteproc remoteproc: qcom_q6v5_mss: map/unmap mpss segments before/after use 2020-06-24 17:50:13 +02:00
reset reset: uniphier: Add SCSSI reset control for each channel 2020-02-24 08:36:41 +01:00
rpmsg rpmsg: char: release allocated memory 2020-01-14 20:08:37 +01:00
rtc rtc: mc13xxx: fix a double-unlock issue 2020-06-24 17:50:12 +02:00
s390 s390/qdio: put thinint indicator after early error 2020-06-24 17:50:22 +02:00
sbus
scsi scsi: mpt3sas: Fix double free warnings 2020-06-24 17:50:26 +02:00
sfi
sh
siox
slimbus slimbus: ngd: get drvdata from correct device 2020-06-24 17:50:22 +02:00
soc soc/tegra: pmc: Select GENERIC_PINCONF 2020-06-22 09:31:22 +02:00
soundwire soundwire: slave: don't init debugfs on device registration error 2020-06-24 17:50:23 +02:00
spi spi: dw: Return any value retrieved from the dma_transfer callback 2020-06-22 09:31:10 +02:00
spmi spmi: pmic-arb: Set lockdep class for hierarchical irq domains 2020-02-19 19:53:07 +01:00
ssb
staging staging: sm750fb: add missing case while setting FB_VISUAL 2020-06-24 17:50:24 +02:00
target scsi: target: tcmu: Userspace must not complete queued commands 2020-06-24 17:50:30 +02:00
tc
tee tee: optee: Fix compilation issue with nommu 2020-02-05 21:22:49 +00:00
thermal thermal/drivers/ti-soc-thermal: Avoid dereferencing ERR_PTR 2020-06-24 17:50:23 +02:00
thunderbolt thunderbolt: Prevent crash if non-active NVMem file is read 2020-02-28 17:22:13 +01:00
tty tty: n_gsm: Fix bogus i++ in gsm_data_kick 2020-06-24 17:50:29 +02:00
uio uio: fix a sleep-in-atomic-context bug in uio_dmem_genirq_irqcontrol() 2020-02-24 08:36:27 +01:00
usb usb: gadget: Fix issue with config_ep_by_speed function 2020-06-24 17:50:32 +02:00
vfio vfio-pci: Mask cap zero 2020-06-24 17:50:29 +02:00
vhost scsi: vhost: Notify TCM about the maximum sg entries supported per command 2020-06-24 17:50:17 +02:00
video backlight: lp855x: Ensure regulators are disabled on probe failure 2020-06-24 17:50:09 +02:00
virt
virtio virtio_ring: Fix mem leak with vring_new_virtqueue() 2020-03-18 07:17:55 +01:00
visorbus visorbus: fix uninitialized variable access 2020-02-24 08:36:47 +01:00
vlynq
vme vme: bridges: reduce stack usage 2020-02-24 08:36:48 +01:00
w1 w1: omap-hdq: cleanup to add missing newline for some dev_dbg 2020-06-22 09:31:26 +02:00
watchdog watchdog: da9062: No need to ping manually before setting timeout 2020-06-24 17:50:32 +02:00
xen xen/pvcalls-back: test for errors when calling backend_connect() 2020-06-17 16:40:38 +02:00
zorro
Kconfig
Makefile