* [PATCH AUTOSEL 4.19 301/671] usb: typec: tcpm: Notify the tcpc to start connection-detection for SRPs [not found] <20200116170509.12787-1-sashal@kernel.org> @ 2020-01-16 16:58 ` Sasha Levin 2020-01-16 16:59 ` [PATCH AUTOSEL 4.19 325/671] usb: gadget: fsl: fix link error against usb-gadget module Sasha Levin ` (5 subsequent siblings) 6 siblings, 0 replies; 10+ messages in thread From: Sasha Levin @ 2020-01-16 16:58 UTC (permalink / raw) To: linux-kernel, stable Cc: Hans de Goede, Adam Thomson, Guenter Roeck, Heikki Krogerus, Greg Kroah-Hartman, Sasha Levin, linux-usb From: Hans de Goede <hdegoede@redhat.com> [ Upstream commit 7893f9e1c26d1f9ea02622902ee671de45ad377b ] Some tcpc device-drivers need to explicitly be told to watch for connection events, otherwise the tcpc will not generate any TCPM_CC_EVENTs and devices being plugged into the Type-C port will not be noticed. For dual-role ports tcpm_start_drp_toggling() is used to tell the tcpc to watch for connection events. Sofar we lack a similar callback to the tcpc for single-role ports. With some tcpc-s such as the fusb302 this means no TCPM_CC_EVENTs will be generated when the port is configured as a single-role port. This commit renames start_drp_toggling to start_toggling and since the device-properties are parsed by the tcpm-core, adds a port_type parameter to the start_toggling callback so that the tcpc_dev driver knows the port-type and can act accordingly when it starts toggling. The new start_toggling callback now always gets called if defined, instead of only being called for DRP ports. To avoid this causing undesirable functional changes all existing start_drp_toggling implementations are not only renamed to start_toggling, but also get a port_type check added and return -EOPNOTSUPP when port_type is not DRP. Fixes: ea3b4d5523bc("usb: typec: fusb302: Resolve fixed power role ...") Cc: Adam Thomson <Adam.Thomson.Opensource@diasemi.com> Signed-off-by: Hans de Goede <hdegoede@redhat.com> Reviewed-by: Guenter Roeck <linux@roeck-us.net> Acked-by: Heikki Krogerus <heikki.krogerus@linux.intel.com> Tested-by: Adam Thomson <Adam.Thomson.Opensource@diasemi.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: Sasha Levin <sashal@kernel.org> --- drivers/usb/typec/fusb302/fusb302.c | 10 ++++++--- drivers/usb/typec/tcpci.c | 10 ++++++--- drivers/usb/typec/tcpm.c | 32 +++++++++++++---------------- drivers/usb/typec/typec_wcove.c | 10 ++++++--- include/linux/usb/tcpm.h | 13 ++++++------ 5 files changed, 42 insertions(+), 33 deletions(-) diff --git a/drivers/usb/typec/fusb302/fusb302.c b/drivers/usb/typec/fusb302/fusb302.c index 62a0060d39d8..c749ce486ec8 100644 --- a/drivers/usb/typec/fusb302/fusb302.c +++ b/drivers/usb/typec/fusb302/fusb302.c @@ -990,13 +990,17 @@ static int tcpm_set_roles(struct tcpc_dev *dev, bool attached, return ret; } -static int tcpm_start_drp_toggling(struct tcpc_dev *dev, - enum typec_cc_status cc) +static int tcpm_start_toggling(struct tcpc_dev *dev, + enum typec_port_type port_type, + enum typec_cc_status cc) { struct fusb302_chip *chip = container_of(dev, struct fusb302_chip, tcpc_dev); int ret = 0; + if (port_type != TYPEC_PORT_DRP) + return -EOPNOTSUPP; + mutex_lock(&chip->lock); ret = fusb302_set_src_current(chip, cc_src_current[cc]); if (ret < 0) { @@ -1206,7 +1210,7 @@ static void init_tcpc_dev(struct tcpc_dev *fusb302_tcpc_dev) fusb302_tcpc_dev->set_vbus = tcpm_set_vbus; fusb302_tcpc_dev->set_pd_rx = tcpm_set_pd_rx; fusb302_tcpc_dev->set_roles = tcpm_set_roles; - fusb302_tcpc_dev->start_drp_toggling = tcpm_start_drp_toggling; + fusb302_tcpc_dev->start_toggling = tcpm_start_toggling; fusb302_tcpc_dev->pd_transmit = tcpm_pd_transmit; } diff --git a/drivers/usb/typec/tcpci.c b/drivers/usb/typec/tcpci.c index ac6b418b15f1..c1f7073a56de 100644 --- a/drivers/usb/typec/tcpci.c +++ b/drivers/usb/typec/tcpci.c @@ -100,13 +100,17 @@ static int tcpci_set_cc(struct tcpc_dev *tcpc, enum typec_cc_status cc) return 0; } -static int tcpci_start_drp_toggling(struct tcpc_dev *tcpc, - enum typec_cc_status cc) +static int tcpci_start_toggling(struct tcpc_dev *tcpc, + enum typec_port_type port_type, + enum typec_cc_status cc) { int ret; struct tcpci *tcpci = tcpc_to_tcpci(tcpc); unsigned int reg = TCPC_ROLE_CTRL_DRP; + if (port_type != TYPEC_PORT_DRP) + return -EOPNOTSUPP; + /* Handle vendor drp toggling */ if (tcpci->data->start_drp_toggling) { ret = tcpci->data->start_drp_toggling(tcpci, tcpci->data, cc); @@ -511,7 +515,7 @@ struct tcpci *tcpci_register_port(struct device *dev, struct tcpci_data *data) tcpci->tcpc.get_cc = tcpci_get_cc; tcpci->tcpc.set_polarity = tcpci_set_polarity; tcpci->tcpc.set_vconn = tcpci_set_vconn; - tcpci->tcpc.start_drp_toggling = tcpci_start_drp_toggling; + tcpci->tcpc.start_toggling = tcpci_start_toggling; tcpci->tcpc.set_pd_rx = tcpci_set_pd_rx; tcpci->tcpc.set_roles = tcpci_set_roles; diff --git a/drivers/usb/typec/tcpm.c b/drivers/usb/typec/tcpm.c index 39cf19001239..29d72e9b0f01 100644 --- a/drivers/usb/typec/tcpm.c +++ b/drivers/usb/typec/tcpm.c @@ -31,7 +31,7 @@ #define FOREACH_STATE(S) \ S(INVALID_STATE), \ - S(DRP_TOGGLING), \ + S(TOGGLING), \ S(SRC_UNATTACHED), \ S(SRC_ATTACH_WAIT), \ S(SRC_ATTACHED), \ @@ -473,7 +473,7 @@ static void tcpm_log(struct tcpm_port *port, const char *fmt, ...) /* Do not log while disconnected and unattached */ if (tcpm_port_is_disconnected(port) && (port->state == SRC_UNATTACHED || port->state == SNK_UNATTACHED || - port->state == DRP_TOGGLING)) + port->state == TOGGLING)) return; va_start(args, fmt); @@ -2561,20 +2561,16 @@ static int tcpm_set_charge(struct tcpm_port *port, bool charge) return 0; } -static bool tcpm_start_drp_toggling(struct tcpm_port *port, - enum typec_cc_status cc) +static bool tcpm_start_toggling(struct tcpm_port *port, enum typec_cc_status cc) { int ret; - if (port->tcpc->start_drp_toggling && - port->port_type == TYPEC_PORT_DRP) { - tcpm_log_force(port, "Start DRP toggling"); - ret = port->tcpc->start_drp_toggling(port->tcpc, cc); - if (!ret) - return true; - } + if (!port->tcpc->start_toggling) + return false; - return false; + tcpm_log_force(port, "Start toggling"); + ret = port->tcpc->start_toggling(port->tcpc, port->port_type, cc); + return ret == 0; } static void tcpm_set_cc(struct tcpm_port *port, enum typec_cc_status cc) @@ -2868,15 +2864,15 @@ static void run_state_machine(struct tcpm_port *port) port->enter_state = port->state; switch (port->state) { - case DRP_TOGGLING: + case TOGGLING: break; /* SRC states */ case SRC_UNATTACHED: if (!port->non_pd_role_swap) tcpm_swap_complete(port, -ENOTCONN); tcpm_src_detach(port); - if (tcpm_start_drp_toggling(port, tcpm_rp_cc(port))) { - tcpm_set_state(port, DRP_TOGGLING, 0); + if (tcpm_start_toggling(port, tcpm_rp_cc(port))) { + tcpm_set_state(port, TOGGLING, 0); break; } tcpm_set_cc(port, tcpm_rp_cc(port)); @@ -3074,8 +3070,8 @@ static void run_state_machine(struct tcpm_port *port) tcpm_swap_complete(port, -ENOTCONN); tcpm_pps_complete(port, -ENOTCONN); tcpm_snk_detach(port); - if (tcpm_start_drp_toggling(port, TYPEC_CC_RD)) { - tcpm_set_state(port, DRP_TOGGLING, 0); + if (tcpm_start_toggling(port, TYPEC_CC_RD)) { + tcpm_set_state(port, TOGGLING, 0); break; } tcpm_set_cc(port, TYPEC_CC_RD); @@ -3642,7 +3638,7 @@ static void _tcpm_cc_change(struct tcpm_port *port, enum typec_cc_status cc1, : "connected"); switch (port->state) { - case DRP_TOGGLING: + case TOGGLING: if (tcpm_port_is_debug(port) || tcpm_port_is_audio(port) || tcpm_port_is_source(port)) tcpm_set_state(port, SRC_ATTACH_WAIT, 0); diff --git a/drivers/usb/typec/typec_wcove.c b/drivers/usb/typec/typec_wcove.c index 6770afd40765..f1f8f45e2f3d 100644 --- a/drivers/usb/typec/typec_wcove.c +++ b/drivers/usb/typec/typec_wcove.c @@ -416,12 +416,16 @@ static int wcove_pd_transmit(struct tcpc_dev *tcpc, return regmap_write(wcove->regmap, USBC_TXCMD, cmd | USBC_TXCMD_START); } -static int wcove_start_drp_toggling(struct tcpc_dev *tcpc, - enum typec_cc_status cc) +static int wcove_start_toggling(struct tcpc_dev *tcpc, + enum typec_port_type port_type, + enum typec_cc_status cc) { struct wcove_typec *wcove = tcpc_to_wcove(tcpc); unsigned int usbc_ctrl; + if (port_type != TYPEC_PORT_DRP) + return -EOPNOTSUPP; + usbc_ctrl = USBC_CONTROL1_MODE_DRP | USBC_CONTROL1_DRPTOGGLE_RANDOM; switch (cc) { @@ -642,7 +646,7 @@ static int wcove_typec_probe(struct platform_device *pdev) wcove->tcpc.set_polarity = wcove_set_polarity; wcove->tcpc.set_vconn = wcove_set_vconn; wcove->tcpc.set_current_limit = wcove_set_current_limit; - wcove->tcpc.start_drp_toggling = wcove_start_drp_toggling; + wcove->tcpc.start_toggling = wcove_start_toggling; wcove->tcpc.set_pd_rx = wcove_set_pd_rx; wcove->tcpc.set_roles = wcove_set_roles; diff --git a/include/linux/usb/tcpm.h b/include/linux/usb/tcpm.h index 50c74a77db55..8cb93aff69f1 100644 --- a/include/linux/usb/tcpm.h +++ b/include/linux/usb/tcpm.h @@ -121,10 +121,10 @@ struct tcpc_config { * with partner. * @set_pd_rx: Called to enable or disable reception of PD messages * @set_roles: Called to set power and data roles - * @start_drp_toggling: - * Optional; if supported by hardware, called to start DRP - * toggling. DRP toggling is stopped automatically if - * a connection is established. + * @start_toggling: + * Optional; if supported by hardware, called to start dual-role + * toggling or single-role connection detection. Toggling stops + * automatically if a connection is established. * @try_role: Optional; called to set a preferred role * @pd_transmit:Called to transmit PD message * @mux: Pointer to multiplexer data @@ -147,8 +147,9 @@ struct tcpc_dev { int (*set_pd_rx)(struct tcpc_dev *dev, bool on); int (*set_roles)(struct tcpc_dev *dev, bool attached, enum typec_role role, enum typec_data_role data); - int (*start_drp_toggling)(struct tcpc_dev *dev, - enum typec_cc_status cc); + int (*start_toggling)(struct tcpc_dev *dev, + enum typec_port_type port_type, + enum typec_cc_status cc); int (*try_role)(struct tcpc_dev *dev, int role); int (*pd_transmit)(struct tcpc_dev *dev, enum tcpm_transmit_type type, const struct pd_message *msg); -- 2.20.1 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH AUTOSEL 4.19 325/671] usb: gadget: fsl: fix link error against usb-gadget module [not found] <20200116170509.12787-1-sashal@kernel.org> 2020-01-16 16:58 ` [PATCH AUTOSEL 4.19 301/671] usb: typec: tcpm: Notify the tcpc to start connection-detection for SRPs Sasha Levin @ 2020-01-16 16:59 ` Sasha Levin 2020-01-16 16:59 ` [PATCH AUTOSEL 4.19 326/671] dwc2: gadget: Fix completed transfer size calculation in DDMA Sasha Levin ` (4 subsequent siblings) 6 siblings, 0 replies; 10+ messages in thread From: Sasha Levin @ 2020-01-16 16:59 UTC (permalink / raw) To: linux-kernel, stable; +Cc: Arnd Bergmann, Felipe Balbi, Sasha Levin, linux-usb From: Arnd Bergmann <arnd@arndb.de> [ Upstream commit 2100e3ca3676e894fa48b8f6f01d01733387fe81 ] The dependency to ensure this driver links correctly fails since it can not be a loadable module: drivers/usb/phy/phy-fsl-usb.o: In function `fsl_otg_set_peripheral': phy-fsl-usb.c:(.text+0x2224): undefined reference to `usb_gadget_vbus_disconnect' Make the option 'tristate' so it can work correctly. Fixes: 5a8d651a2bde ("usb: gadget: move gadget API functions to udc-core") Signed-off-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com> Signed-off-by: Sasha Levin <sashal@kernel.org> --- drivers/usb/phy/Kconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/usb/phy/Kconfig b/drivers/usb/phy/Kconfig index 91ea3083e7ad..affb5393c4c6 100644 --- a/drivers/usb/phy/Kconfig +++ b/drivers/usb/phy/Kconfig @@ -20,7 +20,7 @@ config AB8500_USB in host mode, low speed. config FSL_USB2_OTG - bool "Freescale USB OTG Transceiver Driver" + tristate "Freescale USB OTG Transceiver Driver" depends on USB_EHCI_FSL && USB_FSL_USB2 && USB_OTG_FSM=y && PM depends on USB_GADGET || !USB_GADGET # if USB_GADGET=m, this can't be 'y' select USB_PHY -- 2.20.1 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH AUTOSEL 4.19 326/671] dwc2: gadget: Fix completed transfer size calculation in DDMA [not found] <20200116170509.12787-1-sashal@kernel.org> 2020-01-16 16:58 ` [PATCH AUTOSEL 4.19 301/671] usb: typec: tcpm: Notify the tcpc to start connection-detection for SRPs Sasha Levin 2020-01-16 16:59 ` [PATCH AUTOSEL 4.19 325/671] usb: gadget: fsl: fix link error against usb-gadget module Sasha Levin @ 2020-01-16 16:59 ` Sasha Levin 2020-01-16 17:01 ` [PATCH AUTOSEL 4.19 470/671] usb: host: xhci-hub: fix extra endianness conversion Sasha Levin ` (3 subsequent siblings) 6 siblings, 0 replies; 10+ messages in thread From: Sasha Levin @ 2020-01-16 16:59 UTC (permalink / raw) To: linux-kernel, stable Cc: Minas Harutyunyan, Minas Harutyunyan, Felipe Balbi, Sasha Levin, linux-usb From: Minas Harutyunyan <minas.harutyunyan@synopsys.com> [ Upstream commit 5acb4b970184d189d901192d075997c933b82260 ] Fix calculation of transfer size on completion in function dwc2_gadget_get_xfersize_ddma(). Added increment of descriptor pointer to move to next descriptor in the loop. Fixes: aa3e8bc81311 ("usb: dwc2: gadget: DDMA transfer start and complete") Signed-off-by: Minas Harutyunyan <hminas@synopsys.com> Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com> Signed-off-by: Sasha Levin <sashal@kernel.org> --- drivers/usb/dwc2/gadget.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/usb/dwc2/gadget.c b/drivers/usb/dwc2/gadget.c index 3f68edde0f03..f64d1cd08fb6 100644 --- a/drivers/usb/dwc2/gadget.c +++ b/drivers/usb/dwc2/gadget.c @@ -2230,6 +2230,7 @@ static unsigned int dwc2_gadget_get_xfersize_ddma(struct dwc2_hsotg_ep *hs_ep) if (status & DEV_DMA_STS_MASK) dev_err(hsotg->dev, "descriptor %d closed with %x\n", i, status & DEV_DMA_STS_MASK); + desc++; } return bytes_rem; -- 2.20.1 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH AUTOSEL 4.19 470/671] usb: host: xhci-hub: fix extra endianness conversion [not found] <20200116170509.12787-1-sashal@kernel.org> ` (2 preceding siblings ...) 2020-01-16 16:59 ` [PATCH AUTOSEL 4.19 326/671] dwc2: gadget: Fix completed transfer size calculation in DDMA Sasha Levin @ 2020-01-16 17:01 ` Sasha Levin 2020-01-16 17:02 ` [PATCH AUTOSEL 4.19 521/671] usb: typec: tps6598x: Fix build error without CONFIG_REGMAP_I2C Sasha Levin ` (2 subsequent siblings) 6 siblings, 0 replies; 10+ messages in thread From: Sasha Levin @ 2020-01-16 17:01 UTC (permalink / raw) To: linux-kernel, stable Cc: Ruslan Bilovol, Mathias Nyman, Greg Kroah-Hartman, Sasha Levin, linux-usb From: Ruslan Bilovol <ruslan.bilovol@gmail.com> [ Upstream commit 6269e4c76eacabaea0d0099200ae1a455768d208 ] Don't do extra cpu_to_le32 conversion for put_unaligned_le32 because it is already implemented in this function. Fixes sparse error: xhci-hub.c:1152:44: warning: incorrect type in argument 1 (different base types) xhci-hub.c:1152:44: expected unsigned int [usertype] val xhci-hub.c:1152:44: got restricted __le32 [usertype] Fixes: 395f540 "xhci: support new USB 3.1 hub request to get extended port status" Cc: Mathias Nyman <mathias.nyman@linux.intel.com> Signed-off-by: Ruslan Bilovol <ruslan.bilovol@gmail.com> Link: https://lore.kernel.org/r/1562501839-26522-1-git-send-email-ruslan.bilovol@gmail.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: Sasha Levin <sashal@kernel.org> --- drivers/usb/host/xhci-hub.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/usb/host/xhci-hub.c b/drivers/usb/host/xhci-hub.c index 8f180bf7561a..9772c0de59b7 100644 --- a/drivers/usb/host/xhci-hub.c +++ b/drivers/usb/host/xhci-hub.c @@ -1104,7 +1104,7 @@ int xhci_hub_control(struct usb_hcd *hcd, u16 typeReq, u16 wValue, } port_li = readl(ports[wIndex]->addr + PORTLI); status = xhci_get_ext_port_status(temp, port_li); - put_unaligned_le32(cpu_to_le32(status), &buf[4]); + put_unaligned_le32(status, &buf[4]); } break; case SetPortFeature: -- 2.20.1 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH AUTOSEL 4.19 521/671] usb: typec: tps6598x: Fix build error without CONFIG_REGMAP_I2C [not found] <20200116170509.12787-1-sashal@kernel.org> ` (3 preceding siblings ...) 2020-01-16 17:01 ` [PATCH AUTOSEL 4.19 470/671] usb: host: xhci-hub: fix extra endianness conversion Sasha Levin @ 2020-01-16 17:02 ` Sasha Levin 2020-01-16 17:03 ` [PATCH AUTOSEL 4.19 592/671] USB: usb-skeleton: fix use-after-free after driver unbind Sasha Levin 2020-01-16 17:05 ` [PATCH AUTOSEL 4.19 668/671] usb: dwc3: Allow building USB_DWC3_QCOM without EXTCON Sasha Levin 6 siblings, 0 replies; 10+ messages in thread From: Sasha Levin @ 2020-01-16 17:02 UTC (permalink / raw) To: linux-kernel, stable Cc: YueHaibing, Hulk Robot, Heikki Krogerus, Greg Kroah-Hartman, Sasha Levin, linux-usb From: YueHaibing <yuehaibing@huawei.com> [ Upstream commit 35af2445dc306403254a181507b390ec9eb725d5 ] If CONFIG_REGMAP_I2C is not set, building fails: drivers/usb/typec/tps6598x.o: In function `tps6598x_probe': tps6598x.c:(.text+0x5f0): undefined reference to `__devm_regmap_init_i2c' Select REGMAP_I2C to fix this. Reported-by: Hulk Robot <hulkci@huawei.com> Fixes: 0a4c005bd171 ("usb: typec: driver for TI TPS6598x USB Power Delivery controllers") Signed-off-by: YueHaibing <yuehaibing@huawei.com> Acked-by: Heikki Krogerus <heikki.krogerus@linux.intel.com> Link: https://lore.kernel.org/r/20190903121026.22148-1-yuehaibing@huawei.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: Sasha Levin <sashal@kernel.org> --- drivers/usb/typec/Kconfig | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/usb/typec/Kconfig b/drivers/usb/typec/Kconfig index 00878c386dd0..8445890accdf 100644 --- a/drivers/usb/typec/Kconfig +++ b/drivers/usb/typec/Kconfig @@ -95,6 +95,7 @@ source "drivers/usb/typec/ucsi/Kconfig" config TYPEC_TPS6598X tristate "TI TPS6598x USB Power Delivery controller driver" depends on I2C + select REGMAP_I2C help Say Y or M here if your system has TI TPS65982 or TPS65983 USB Power Delivery controller. -- 2.20.1 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH AUTOSEL 4.19 592/671] USB: usb-skeleton: fix use-after-free after driver unbind [not found] <20200116170509.12787-1-sashal@kernel.org> ` (4 preceding siblings ...) 2020-01-16 17:02 ` [PATCH AUTOSEL 4.19 521/671] usb: typec: tps6598x: Fix build error without CONFIG_REGMAP_I2C Sasha Levin @ 2020-01-16 17:03 ` Sasha Levin 2020-01-17 10:21 ` Johan Hovold 2020-01-16 17:05 ` [PATCH AUTOSEL 4.19 668/671] usb: dwc3: Allow building USB_DWC3_QCOM without EXTCON Sasha Levin 6 siblings, 1 reply; 10+ messages in thread From: Sasha Levin @ 2020-01-16 17:03 UTC (permalink / raw) To: linux-kernel, stable Cc: Johan Hovold, Greg Kroah-Hartman, Sasha Levin, linux-usb From: Johan Hovold <johan@kernel.org> [ Upstream commit 6353001852776e7eeaab4da78922d4c6f2b076af ] The driver failed to stop its read URB on disconnect, something which could lead to a use-after-free in the completion handler after driver unbind in case the character device has been closed. Fixes: e7389cc9a7ff ("USB: skel_read really sucks royally") Signed-off-by: Johan Hovold <johan@kernel.org> Link: https://lore.kernel.org/r/20191009170944.30057-3-johan@kernel.org Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: Sasha Levin <sashal@kernel.org> --- drivers/usb/usb-skeleton.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/usb/usb-skeleton.c b/drivers/usb/usb-skeleton.c index e0cf11f798c5..2e99da45ce0b 100644 --- a/drivers/usb/usb-skeleton.c +++ b/drivers/usb/usb-skeleton.c @@ -573,6 +573,7 @@ static void skel_disconnect(struct usb_interface *interface) dev->disconnected = 1; mutex_unlock(&dev->io_mutex); + usb_kill_urb(dev->bulk_in_urb); usb_kill_anchored_urbs(&dev->submitted); /* decrement our usage count */ -- 2.20.1 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH AUTOSEL 4.19 592/671] USB: usb-skeleton: fix use-after-free after driver unbind 2020-01-16 17:03 ` [PATCH AUTOSEL 4.19 592/671] USB: usb-skeleton: fix use-after-free after driver unbind Sasha Levin @ 2020-01-17 10:21 ` Johan Hovold 2020-01-23 14:22 ` Sasha Levin 0 siblings, 1 reply; 10+ messages in thread From: Johan Hovold @ 2020-01-17 10:21 UTC (permalink / raw) To: Sasha Levin Cc: linux-kernel, stable, Johan Hovold, Greg Kroah-Hartman, linux-usb On Thu, Jan 16, 2020 at 12:03:50PM -0500, Sasha Levin wrote: > From: Johan Hovold <johan@kernel.org> > > [ Upstream commit 6353001852776e7eeaab4da78922d4c6f2b076af ] > > The driver failed to stop its read URB on disconnect, something which > could lead to a use-after-free in the completion handler after driver > unbind in case the character device has been closed. > > Fixes: e7389cc9a7ff ("USB: skel_read really sucks royally") > Signed-off-by: Johan Hovold <johan@kernel.org> > Link: https://lore.kernel.org/r/20191009170944.30057-3-johan@kernel.org > Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> > Signed-off-by: Sasha Levin <sashal@kernel.org> This one isn't needed in any stable tree. As we discussed before, the skeleton driver is only there for documentation purposes. Johan ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH AUTOSEL 4.19 592/671] USB: usb-skeleton: fix use-after-free after driver unbind 2020-01-17 10:21 ` Johan Hovold @ 2020-01-23 14:22 ` Sasha Levin 2020-01-23 14:26 ` Greg Kroah-Hartman 0 siblings, 1 reply; 10+ messages in thread From: Sasha Levin @ 2020-01-23 14:22 UTC (permalink / raw) To: Johan Hovold; +Cc: linux-kernel, stable, Greg Kroah-Hartman, linux-usb On Fri, Jan 17, 2020 at 11:21:16AM +0100, Johan Hovold wrote: >On Thu, Jan 16, 2020 at 12:03:50PM -0500, Sasha Levin wrote: >> From: Johan Hovold <johan@kernel.org> >> >> [ Upstream commit 6353001852776e7eeaab4da78922d4c6f2b076af ] >> >> The driver failed to stop its read URB on disconnect, something which >> could lead to a use-after-free in the completion handler after driver >> unbind in case the character device has been closed. >> >> Fixes: e7389cc9a7ff ("USB: skel_read really sucks royally") >> Signed-off-by: Johan Hovold <johan@kernel.org> >> Link: https://lore.kernel.org/r/20191009170944.30057-3-johan@kernel.org >> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> >> Signed-off-by: Sasha Levin <sashal@kernel.org> > >This one isn't needed in any stable tree. As we discussed before, the >skeleton driver is only there for documentation purposes. I'll drop this, but I'm curious: doesn't this mean that users will build on buggy example code? -- Thanks, Sasha ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH AUTOSEL 4.19 592/671] USB: usb-skeleton: fix use-after-free after driver unbind 2020-01-23 14:22 ` Sasha Levin @ 2020-01-23 14:26 ` Greg Kroah-Hartman 0 siblings, 0 replies; 10+ messages in thread From: Greg Kroah-Hartman @ 2020-01-23 14:26 UTC (permalink / raw) To: Sasha Levin; +Cc: Johan Hovold, linux-kernel, stable, linux-usb On Thu, Jan 23, 2020 at 09:22:52AM -0500, Sasha Levin wrote: > On Fri, Jan 17, 2020 at 11:21:16AM +0100, Johan Hovold wrote: > > On Thu, Jan 16, 2020 at 12:03:50PM -0500, Sasha Levin wrote: > > > From: Johan Hovold <johan@kernel.org> > > > > > > [ Upstream commit 6353001852776e7eeaab4da78922d4c6f2b076af ] > > > > > > The driver failed to stop its read URB on disconnect, something which > > > could lead to a use-after-free in the completion handler after driver > > > unbind in case the character device has been closed. > > > > > > Fixes: e7389cc9a7ff ("USB: skel_read really sucks royally") > > > Signed-off-by: Johan Hovold <johan@kernel.org> > > > Link: https://lore.kernel.org/r/20191009170944.30057-3-johan@kernel.org > > > Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> > > > Signed-off-by: Sasha Levin <sashal@kernel.org> > > > > This one isn't needed in any stable tree. As we discussed before, the > > skeleton driver is only there for documentation purposes. > > I'll drop this, but I'm curious: doesn't this mean that users will build > on buggy example code? They should always be grabbing the "latest" version of the file to work off of anyway. Given that there are very few new USB drivers anymore, I doubt this really matters much... thanks, greg k-h ^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH AUTOSEL 4.19 668/671] usb: dwc3: Allow building USB_DWC3_QCOM without EXTCON [not found] <20200116170509.12787-1-sashal@kernel.org> ` (5 preceding siblings ...) 2020-01-16 17:03 ` [PATCH AUTOSEL 4.19 592/671] USB: usb-skeleton: fix use-after-free after driver unbind Sasha Levin @ 2020-01-16 17:05 ` Sasha Levin 6 siblings, 0 replies; 10+ messages in thread From: Sasha Levin @ 2020-01-16 17:05 UTC (permalink / raw) To: linux-kernel, stable Cc: Marc Gonzalez, Greg Kroah-Hartman, Sasha Levin, linux-usb From: Marc Gonzalez <marc.w.gonzalez@free.fr> [ Upstream commit 77a4946516fe488b6a33390de6d749f934a243ba ] Keep EXTCON support optional, as some platforms do not need it. Do the same for USB_DWC3_OMAP while we're at it. Fixes: 3def4031b3e3f ("usb: dwc3: add EXTCON dependency for qcom") Signed-off-by: Marc Gonzalez <marc.w.gonzalez@free.fr> Cc: stable <stable@vger.kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: Sasha Levin <sashal@kernel.org> --- drivers/usb/dwc3/Kconfig | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/usb/dwc3/Kconfig b/drivers/usb/dwc3/Kconfig index 1a0404fda596..5d22f4bf2a9f 100644 --- a/drivers/usb/dwc3/Kconfig +++ b/drivers/usb/dwc3/Kconfig @@ -52,7 +52,8 @@ comment "Platform Glue Driver Support" config USB_DWC3_OMAP tristate "Texas Instruments OMAP5 and similar Platforms" - depends on EXTCON && (ARCH_OMAP2PLUS || COMPILE_TEST) + depends on ARCH_OMAP2PLUS || COMPILE_TEST + depends on EXTCON || !EXTCON depends on OF default USB_DWC3 help @@ -113,7 +114,8 @@ config USB_DWC3_ST config USB_DWC3_QCOM tristate "Qualcomm Platform" - depends on EXTCON && (ARCH_QCOM || COMPILE_TEST) + depends on ARCH_QCOM || COMPILE_TEST + depends on EXTCON || !EXTCON depends on OF default USB_DWC3 help -- 2.20.1 ^ permalink raw reply related [flat|nested] 10+ messages in thread
end of thread, other threads:[~2020-01-23 14:26 UTC | newest] Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- [not found] <20200116170509.12787-1-sashal@kernel.org> 2020-01-16 16:58 ` [PATCH AUTOSEL 4.19 301/671] usb: typec: tcpm: Notify the tcpc to start connection-detection for SRPs Sasha Levin 2020-01-16 16:59 ` [PATCH AUTOSEL 4.19 325/671] usb: gadget: fsl: fix link error against usb-gadget module Sasha Levin 2020-01-16 16:59 ` [PATCH AUTOSEL 4.19 326/671] dwc2: gadget: Fix completed transfer size calculation in DDMA Sasha Levin 2020-01-16 17:01 ` [PATCH AUTOSEL 4.19 470/671] usb: host: xhci-hub: fix extra endianness conversion Sasha Levin 2020-01-16 17:02 ` [PATCH AUTOSEL 4.19 521/671] usb: typec: tps6598x: Fix build error without CONFIG_REGMAP_I2C Sasha Levin 2020-01-16 17:03 ` [PATCH AUTOSEL 4.19 592/671] USB: usb-skeleton: fix use-after-free after driver unbind Sasha Levin 2020-01-17 10:21 ` Johan Hovold 2020-01-23 14:22 ` Sasha Levin 2020-01-23 14:26 ` Greg Kroah-Hartman 2020-01-16 17:05 ` [PATCH AUTOSEL 4.19 668/671] usb: dwc3: Allow building USB_DWC3_QCOM without EXTCON Sasha Levin
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).