Re: [PATCH] usb: phy: msm: fix a possible NULL dereference

2015-11-16 Thread Corentin LABBE
Le 16/11/2015 18:07, Felipe Balbi a écrit :
> 
> Hi,
> 
> LABBE Corentin  writes:
>> of_match_device could return NULL, and so cause a NULL pointer
>> dereference later. Renaming id to of_id (like all others do) in the
>> process.
>>
>> Reported-by: coverity (CID 1324133)
>> Signed-off-by: LABBE Corentin 
>> ---
>>  drivers/usb/phy/phy-msm-usb.c | 9 ++---
>>  1 file changed, 6 insertions(+), 3 deletions(-)
>>
>> diff --git a/drivers/usb/phy/phy-msm-usb.c b/drivers/usb/phy/phy-msm-usb.c
>> index 80eb991..c4a66cf 100644
>> --- a/drivers/usb/phy/phy-msm-usb.c
>> +++ b/drivers/usb/phy/phy-msm-usb.c
>> @@ -1506,20 +1506,23 @@ static int msm_otg_read_dt(struct platform_device 
>> *pdev, struct msm_otg *motg)
>>  {
>>  struct msm_otg_platform_data *pdata;
>>  struct extcon_dev *ext_id, *ext_vbus;
>> -const struct of_device_id *id;
>> +const struct of_device_id *of_id;
> 
> and why did you need to rename this variable ? Please resend without the
> variable rename.
> 

I was renaming because all other drivers call it of_id, but I got hint from 
another thread to use of_device_get_match_data() which will permit to remove 
that variable, and still solve the issue.

Regards

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[BUG] net: dm9600: false link status

2019-06-27 Thread Corentin Labbe
Hello

I own an USB dongle which is a "Davicom DM96xx USB 10/100 Ethernet".
According to the CHIP_ID, it is a DM9620.

Since I needed for bringing network to uboot for a board, I have started to 
create its uboot's driver.
My uboot driver is based on the dm9600 Linux driver.

The dongle was working but very very slowy (24Kib/s).
After some debug i found that the main problem was that it always link to 
10Mbit/s Half-duplex. (according to the MAC registers)

For checking the status of the dongle I have plugged it on a Linux box which 
give me:
dm9601 6-2:1.0 enp0s29f0u2: link up, 100Mbps, full-duplex, lpa 0x

But in fact the Linux driver is tricked.

I have added debug of MDIO write/read and got:
[157550.926974] dm9601 6-2:1.0 (unnamed net_device) (uninitialized): 
dm9601_mdio_write() phy_id=0x00, loc=0x00, val=0x8000
[157550.931962] dm9601 6-2:1.0 (unnamed net_device) (uninitialized): 
dm9601_mdio_write() phy_id=0x00, loc=0x04, val=0x05e1
[157550.951967] dm9601 6-2:1.0 (unnamed net_device) (uninitialized): 
dm9601_mdio_read() phy_id=0x00, loc=0x00, returns=0x
[157550.951971] dm9601 6-2:1.0 (unnamed net_device) (uninitialized): 
dm9601_mdio_write() phy_id=0x00, loc=0x00, val=0x
[157567.781989] dm9601 6-2:1.0 enp0s29f0u2: dm9601_mdio_read() phy_id=0x00, 
loc=0x01, returns=0x
[157567.796985] dm9601 6-2:1.0 enp0s29f0u2: dm9601_mdio_read() phy_id=0x00, 
loc=0x01, returns=0x
[157567.811989] dm9601 6-2:1.0 enp0s29f0u2: dm9601_mdio_read() phy_id=0x00, 
loc=0x04, returns=0x
[157567.826974] dm9601 6-2:1.0 enp0s29f0u2: dm9601_mdio_read() phy_id=0x00, 
loc=0x05, returns=0x
[157567.841972] dm9601 6-2:1.0 enp0s29f0u2: dm9601_mdio_read() phy_id=0x00, 
loc=0x00, returns=0x
[157567.856974] dm9601 6-2:1.0 enp0s29f0u2: dm9601_mdio_read() phy_id=0x00, 
loc=0x01, returns=0x
[157567.871990] dm9601 6-2:1.0 enp0s29f0u2: dm9601_mdio_read() phy_id=0x00, 
loc=0x04, returns=0x
[157567.886974] dm9601 6-2:1.0 enp0s29f0u2: dm9601_mdio_read() phy_id=0x00, 
loc=0x05, returns=0x
[157567.906010] dm9601 6-2:1.0 enp0s29f0u2: dm9601_mdio_read() phy_id=0x00, 
loc=0x01, returns=0x
[157567.920986] dm9601 6-2:1.0 enp0s29f0u2: dm9601_mdio_read() phy_id=0x00, 
loc=0x01, returns=0x
[157567.935975] dm9601 6-2:1.0 enp0s29f0u2: dm9601_mdio_read() phy_id=0x00, 
loc=0x04, returns=0x
[157567.950974] dm9601 6-2:1.0 enp0s29f0u2: dm9601_mdio_read() phy_id=0x00, 
loc=0x05, returns=0x
[157567.965974] dm9601 6-2:1.0 enp0s29f0u2: dm9601_mdio_read() phy_id=0x00, 
loc=0x00, returns=0x
[157567.980970] dm9601 6-2:1.0 enp0s29f0u2: dm9601_mdio_read() phy_id=0x00, 
loc=0x01, returns=0x
[157567.995973] dm9601 6-2:1.0 enp0s29f0u2: dm9601_mdio_read() phy_id=0x00, 
loc=0x04, returns=0x
[157568.010971] dm9601 6-2:1.0 enp0s29f0u2: dm9601_mdio_read() phy_id=0x00, 
loc=0x05, returns=0x
[157568.025973] dm9601 6-2:1.0 enp0s29f0u2: dm9601_mdio_read() phy_id=0x00, 
loc=0x01, returns=0x
[157568.040969] dm9601 6-2:1.0 enp0s29f0u2: dm9601_mdio_read() phy_id=0x00, 
loc=0x01, returns=0x
[157568.055971] dm9601 6-2:1.0 enp0s29f0u2: dm9601_mdio_read() phy_id=0x00, 
loc=0x04, returns=0x
[157568.070970] dm9601 6-2:1.0 enp0s29f0u2: dm9601_mdio_read() phy_id=0x00, 
loc=0x05, returns=0x
[157568.085971] dm9601 6-2:1.0 enp0s29f0u2: dm9601_mdio_read() phy_id=0x00, 
loc=0x00, returns=0x
[157568.100971] dm9601 6-2:1.0 enp0s29f0u2: dm9601_mdio_read() phy_id=0x00, 
loc=0x01, returns=0x
[157568.115973] dm9601 6-2:1.0 enp0s29f0u2: dm9601_mdio_read() phy_id=0x00, 
loc=0x04, returns=0x
[157568.130970] dm9601 6-2:1.0 enp0s29f0u2: dm9601_mdio_read() phy_id=0x00, 
loc=0x05, returns=0x

So the problem is the same than in my uboot driver, the PHY always return 
0x.

I have tried lots of hack but fail to bring the PHY up.

So it exsists two problem:
- Linux saying 100Mbps, full-duplex even if it is false.
- the PHY which seems in bad state.

For further information, the PHY is the internal one.
On the dongle, only the davicom chip is present (along with some 
resistors/capacitors and a quartz), so I think of the absence of an external 
PHY.

Regards


[PATCH 1/4] usb: xhci: Fix build warning

2017-10-25 Thread Corentin Labbe
This patch fix the following build warnings:
drivers/usb/host/xhci.c:3378:6: warning: variable 'last_freed_endpoint' set but 
not used [-Wunused-but-set-variable]

Signed-off-by: Corentin Labbe 
---
 drivers/usb/host/xhci.c | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c
index ee077a21dfda..b12b2bdd7b47 100644
--- a/drivers/usb/host/xhci.c
+++ b/drivers/usb/host/xhci.c
@@ -3375,7 +3375,6 @@ static int xhci_discover_or_reset_device(struct usb_hcd 
*hcd,
unsigned int slot_id;
struct xhci_virt_device *virt_dev;
struct xhci_command *reset_device_cmd;
-   int last_freed_endpoint;
struct xhci_slot_ctx *slot_ctx;
int old_active_eps = 0;
 
@@ -3490,7 +3489,6 @@ static int xhci_discover_or_reset_device(struct usb_hcd 
*hcd,
}
 
/* Everything but endpoint 0 is disabled, so free the rings. */
-   last_freed_endpoint = 1;
for (i = 1; i < 31; i++) {
struct xhci_virt_ep *ep = &virt_dev->eps[i];
 
@@ -3505,7 +3503,6 @@ static int xhci_discover_or_reset_device(struct usb_hcd 
*hcd,
if (ep->ring) {
xhci_debugfs_remove_endpoint(xhci, virt_dev, i);
xhci_free_endpoint_ring(xhci, virt_dev, i);
-   last_freed_endpoint = i;
}
if (!list_empty(&virt_dev->eps[i].bw_endpoint_list))
xhci_drop_ep_from_interval_table(xhci,
-- 
2.13.6

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 4/4] usb: xhci: Fix build warning

2017-10-25 Thread Corentin Labbe
This patch fix the following build warnings:
drivers/usb/host/xhci-ring.c:2011:20: warning: variable 'ep_ring' set but not 
used [-Wunused-but-set-variable]

Signed-off-by: Corentin Labbe 
---
 drivers/usb/host/xhci-ring.c | 2 --
 1 file changed, 2 deletions(-)

diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c
index 942eeb351a3a..27d657ec5ed5 100644
--- a/drivers/usb/host/xhci-ring.c
+++ b/drivers/usb/host/xhci-ring.c
@@ -2004,7 +2004,6 @@ static int process_ctrl_td(struct xhci_hcd *xhci, struct 
xhci_td *td,
struct xhci_virt_ep *ep, int *status)
 {
struct xhci_virt_device *xdev;
-   struct xhci_ring *ep_ring;
unsigned int slot_id;
int ep_index;
struct xhci_ep_ctx *ep_ctx;
@@ -2016,7 +2015,6 @@ static int process_ctrl_td(struct xhci_hcd *xhci, struct 
xhci_td *td,
slot_id = TRB_TO_SLOT_ID(le32_to_cpu(event->flags));
xdev = xhci->devs[slot_id];
ep_index = TRB_TO_EP_ID(le32_to_cpu(event->flags)) - 1;
-   ep_ring = xhci_dma_to_transfer_ring(ep, le64_to_cpu(event->buffer));
ep_ctx = xhci_get_ep_ctx(xhci, xdev->out_ctx, ep_index);
trb_comp_code = GET_COMP_CODE(le32_to_cpu(event->transfer_len));
requested = td->urb->transfer_buffer_length;
-- 
2.13.6

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 2/4] usb: xhci: Fix build warning

2017-10-25 Thread Corentin Labbe
This patch fix the following build warning:
drivers/usb/host/xhci.c:2853:23: warning: variable 'ep' set but not used 
[-Wunused-but-set-variable]

Signed-off-by: Corentin Labbe 
---
 drivers/usb/host/xhci.c | 2 --
 1 file changed, 2 deletions(-)

diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c
index b12b2bdd7b47..eae86bd7eac8 100644
--- a/drivers/usb/host/xhci.c
+++ b/drivers/usb/host/xhci.c
@@ -2850,12 +2850,10 @@ void xhci_cleanup_stalled_ring(struct xhci_hcd *xhci, 
unsigned int ep_index,
   unsigned int stream_id, struct xhci_td *td)
 {
struct xhci_dequeue_state deq_state;
-   struct xhci_virt_ep *ep;
struct usb_device *udev = td->urb->dev;
 
xhci_dbg_trace(xhci, trace_xhci_dbg_reset_ep,
"Cleaning up stalled endpoint ring");
-   ep = &xhci->devs[udev->slot_id]->eps[ep_index];
/* We need to move the HW's dequeue pointer past this TD,
 * or it will attempt to resend it on the next doorbell ring.
 */
-- 
2.13.6

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 3/4] usb: xhci: Fix build warning

2017-10-25 Thread Corentin Labbe
This patch fix the following build warning:
drivers/usb/host/xhci-ring.c:1895:19: warning: variable 'urb_priv' set but not 
used [-Wunused-but-set-variable]

Signed-off-by: Corentin Labbe 
---
 drivers/usb/host/xhci-ring.c | 2 --
 1 file changed, 2 deletions(-)

diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c
index 521d19e82494..942eeb351a3a 100644
--- a/drivers/usb/host/xhci-ring.c
+++ b/drivers/usb/host/xhci-ring.c
@@ -1890,12 +1890,10 @@ int xhci_is_vendor_info_code(struct xhci_hcd *xhci, 
unsigned int trb_comp_code)
 static int xhci_td_cleanup(struct xhci_hcd *xhci, struct xhci_td *td,
struct xhci_ring *ep_ring, int *status)
 {
-   struct urb_priv *urb_priv;
struct urb *urb = NULL;
 
/* Clean up the endpoint's TD list */
urb = td->urb;
-   urb_priv = urb->hcpriv;
 
/* if a bounce buffer was used to align this td then unmap it */
xhci_unmap_td_bounce_buffer(xhci, ep_ring, td);
-- 
2.13.6

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH v2 2/4] usb: xhci: remove unused variable ep

2017-10-26 Thread Corentin Labbe
From: Corentin Labbe 

This patch fix the following build warning:
drivers/usb/host/xhci.c:2853:23: warning: variable 'ep' set but not used 
[-Wunused-but-set-variable]

Signed-off-by: Corentin Labbe 
---
 drivers/usb/host/xhci.c | 2 --
 1 file changed, 2 deletions(-)

diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c
index b12b2bd..eae86bd 100644
--- a/drivers/usb/host/xhci.c
+++ b/drivers/usb/host/xhci.c
@@ -2850,12 +2850,10 @@ void xhci_cleanup_stalled_ring(struct xhci_hcd *xhci, 
unsigned int ep_index,
   unsigned int stream_id, struct xhci_td *td)
 {
struct xhci_dequeue_state deq_state;
-   struct xhci_virt_ep *ep;
struct usb_device *udev = td->urb->dev;
 
xhci_dbg_trace(xhci, trace_xhci_dbg_reset_ep,
"Cleaning up stalled endpoint ring");
-   ep = &xhci->devs[udev->slot_id]->eps[ep_index];
/* We need to move the HW's dequeue pointer past this TD,
 * or it will attempt to resend it on the next doorbell ring.
 */
-- 
2.7.4

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH v2 4/4] usb: xhci: remove unused variable ep_ring

2017-10-26 Thread Corentin Labbe
From: Corentin Labbe 

This patch fix the following build warnings:
drivers/usb/host/xhci-ring.c:2011:20: warning: variable 'ep_ring' set but not 
used [-Wunused-but-set-variable]

Signed-off-by: Corentin Labbe 
---
 drivers/usb/host/xhci-ring.c | 2 --
 1 file changed, 2 deletions(-)

diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c
index 942eeb3..27d657e 100644
--- a/drivers/usb/host/xhci-ring.c
+++ b/drivers/usb/host/xhci-ring.c
@@ -2004,7 +2004,6 @@ static int process_ctrl_td(struct xhci_hcd *xhci, struct 
xhci_td *td,
struct xhci_virt_ep *ep, int *status)
 {
struct xhci_virt_device *xdev;
-   struct xhci_ring *ep_ring;
unsigned int slot_id;
int ep_index;
struct xhci_ep_ctx *ep_ctx;
@@ -2016,7 +2015,6 @@ static int process_ctrl_td(struct xhci_hcd *xhci, struct 
xhci_td *td,
slot_id = TRB_TO_SLOT_ID(le32_to_cpu(event->flags));
xdev = xhci->devs[slot_id];
ep_index = TRB_TO_EP_ID(le32_to_cpu(event->flags)) - 1;
-   ep_ring = xhci_dma_to_transfer_ring(ep, le64_to_cpu(event->buffer));
ep_ctx = xhci_get_ep_ctx(xhci, xdev->out_ctx, ep_index);
trb_comp_code = GET_COMP_CODE(le32_to_cpu(event->transfer_len));
requested = td->urb->transfer_buffer_length;
-- 
2.7.4

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH v2 1/4] usb: xhci: remove unused variable last_freed_endpoint

2017-10-26 Thread Corentin Labbe
From: Corentin Labbe 

This patch fix the following build warnings:
drivers/usb/host/xhci.c:3378:6: warning: variable 'last_freed_endpoint' set but 
not used [-Wunused-but-set-variable]

Signed-off-by: Corentin Labbe 
---
 drivers/usb/host/xhci.c | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c
index ee077a2..b12b2bd 100644
--- a/drivers/usb/host/xhci.c
+++ b/drivers/usb/host/xhci.c
@@ -3375,7 +3375,6 @@ static int xhci_discover_or_reset_device(struct usb_hcd 
*hcd,
unsigned int slot_id;
struct xhci_virt_device *virt_dev;
struct xhci_command *reset_device_cmd;
-   int last_freed_endpoint;
struct xhci_slot_ctx *slot_ctx;
int old_active_eps = 0;
 
@@ -3490,7 +3489,6 @@ static int xhci_discover_or_reset_device(struct usb_hcd 
*hcd,
}
 
/* Everything but endpoint 0 is disabled, so free the rings. */
-   last_freed_endpoint = 1;
for (i = 1; i < 31; i++) {
struct xhci_virt_ep *ep = &virt_dev->eps[i];
 
@@ -3505,7 +3503,6 @@ static int xhci_discover_or_reset_device(struct usb_hcd 
*hcd,
if (ep->ring) {
xhci_debugfs_remove_endpoint(xhci, virt_dev, i);
xhci_free_endpoint_ring(xhci, virt_dev, i);
-   last_freed_endpoint = i;
}
if (!list_empty(&virt_dev->eps[i].bw_endpoint_list))
xhci_drop_ep_from_interval_table(xhci,
-- 
2.7.4

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH v2 0/4] usb: xhci: fix build warnings

2017-10-26 Thread Corentin Labbe
Hello

This patchset fix some build warnings on usb/xhci.

Regards

Changes since v1:
- Changed subject of patch

Corentin Labbe (4):
  usb: xhci: remove unused variable last_freed_endpoint
  usb: xhci: remove unused variable ep
  usb: xhci: remove unused variable urb_priv
  usb: xhci: remove unused variable ep_ring

 drivers/usb/host/xhci-ring.c | 4 
 drivers/usb/host/xhci.c  | 5 -
 2 files changed, 9 deletions(-)

-- 
2.7.4

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH v2 3/4] usb: xhci: remove unused variable urb_priv

2017-10-26 Thread Corentin Labbe
From: Corentin Labbe 

This patch fix the following build warning:
drivers/usb/host/xhci-ring.c:1895:19: warning: variable 'urb_priv' set but not 
used [-Wunused-but-set-variable]

Signed-off-by: Corentin Labbe 
---
 drivers/usb/host/xhci-ring.c | 2 --
 1 file changed, 2 deletions(-)

diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c
index 521d19e..942eeb3 100644
--- a/drivers/usb/host/xhci-ring.c
+++ b/drivers/usb/host/xhci-ring.c
@@ -1890,12 +1890,10 @@ int xhci_is_vendor_info_code(struct xhci_hcd *xhci, 
unsigned int trb_comp_code)
 static int xhci_td_cleanup(struct xhci_hcd *xhci, struct xhci_td *td,
struct xhci_ring *ep_ring, int *status)
 {
-   struct urb_priv *urb_priv;
struct urb *urb = NULL;
 
/* Clean up the endpoint's TD list */
urb = td->urb;
-   urb_priv = urb->hcpriv;
 
/* if a bounce buffer was used to align this td then unmap it */
xhci_unmap_td_bounce_buffer(xhci, ep_ring, td);
-- 
2.7.4

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 1/4] usb: xhci: remove unused variable last_freed_endpoint

2017-10-26 Thread Corentin Labbe
This patch fix the following build warnings:
drivers/usb/host/xhci.c:3378:6: warning: variable 'last_freed_endpoint' set but 
not used [-Wunused-but-set-variable]

Signed-off-by: Corentin Labbe 
---
 drivers/usb/host/xhci.c | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c
index ee077a2..b12b2bd 100644
--- a/drivers/usb/host/xhci.c
+++ b/drivers/usb/host/xhci.c
@@ -3375,7 +3375,6 @@ static int xhci_discover_or_reset_device(struct usb_hcd 
*hcd,
unsigned int slot_id;
struct xhci_virt_device *virt_dev;
struct xhci_command *reset_device_cmd;
-   int last_freed_endpoint;
struct xhci_slot_ctx *slot_ctx;
int old_active_eps = 0;
 
@@ -3490,7 +3489,6 @@ static int xhci_discover_or_reset_device(struct usb_hcd 
*hcd,
}
 
/* Everything but endpoint 0 is disabled, so free the rings. */
-   last_freed_endpoint = 1;
for (i = 1; i < 31; i++) {
struct xhci_virt_ep *ep = &virt_dev->eps[i];
 
@@ -3505,7 +3503,6 @@ static int xhci_discover_or_reset_device(struct usb_hcd 
*hcd,
if (ep->ring) {
xhci_debugfs_remove_endpoint(xhci, virt_dev, i);
xhci_free_endpoint_ring(xhci, virt_dev, i);
-   last_freed_endpoint = i;
}
if (!list_empty(&virt_dev->eps[i].bw_endpoint_list))
xhci_drop_ep_from_interval_table(xhci,
-- 
2.7.4

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 3/4] usb: xhci: remove unused variable urb_priv

2017-10-26 Thread Corentin Labbe
This patch fix the following build warning:
drivers/usb/host/xhci-ring.c:1895:19: warning: variable 'urb_priv' set but not 
used [-Wunused-but-set-variable]

Signed-off-by: Corentin Labbe 
---
 drivers/usb/host/xhci-ring.c | 2 --
 1 file changed, 2 deletions(-)

diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c
index 521d19e..942eeb3 100644
--- a/drivers/usb/host/xhci-ring.c
+++ b/drivers/usb/host/xhci-ring.c
@@ -1890,12 +1890,10 @@ int xhci_is_vendor_info_code(struct xhci_hcd *xhci, 
unsigned int trb_comp_code)
 static int xhci_td_cleanup(struct xhci_hcd *xhci, struct xhci_td *td,
struct xhci_ring *ep_ring, int *status)
 {
-   struct urb_priv *urb_priv;
struct urb *urb = NULL;
 
/* Clean up the endpoint's TD list */
urb = td->urb;
-   urb_priv = urb->hcpriv;
 
/* if a bounce buffer was used to align this td then unmap it */
xhci_unmap_td_bounce_buffer(xhci, ep_ring, td);
-- 
2.7.4

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 2/4] usb: xhci: remove unused variable ep

2017-10-26 Thread Corentin Labbe
This patch fix the following build warning:
drivers/usb/host/xhci.c:2853:23: warning: variable 'ep' set but not used 
[-Wunused-but-set-variable]

Signed-off-by: Corentin Labbe 
---
 drivers/usb/host/xhci.c | 2 --
 1 file changed, 2 deletions(-)

diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c
index b12b2bd..eae86bd 100644
--- a/drivers/usb/host/xhci.c
+++ b/drivers/usb/host/xhci.c
@@ -2850,12 +2850,10 @@ void xhci_cleanup_stalled_ring(struct xhci_hcd *xhci, 
unsigned int ep_index,
   unsigned int stream_id, struct xhci_td *td)
 {
struct xhci_dequeue_state deq_state;
-   struct xhci_virt_ep *ep;
struct usb_device *udev = td->urb->dev;
 
xhci_dbg_trace(xhci, trace_xhci_dbg_reset_ep,
"Cleaning up stalled endpoint ring");
-   ep = &xhci->devs[udev->slot_id]->eps[ep_index];
/* We need to move the HW's dequeue pointer past this TD,
 * or it will attempt to resend it on the next doorbell ring.
 */
-- 
2.7.4

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 4/4] usb: xhci: remove unused variable ep_ring

2017-10-26 Thread Corentin Labbe
This patch fix the following build warnings:
drivers/usb/host/xhci-ring.c:2011:20: warning: variable 'ep_ring' set but not 
used [-Wunused-but-set-variable]

Signed-off-by: Corentin Labbe 
---
 drivers/usb/host/xhci-ring.c | 2 --
 1 file changed, 2 deletions(-)

diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c
index 942eeb3..27d657e 100644
--- a/drivers/usb/host/xhci-ring.c
+++ b/drivers/usb/host/xhci-ring.c
@@ -2004,7 +2004,6 @@ static int process_ctrl_td(struct xhci_hcd *xhci, struct 
xhci_td *td,
struct xhci_virt_ep *ep, int *status)
 {
struct xhci_virt_device *xdev;
-   struct xhci_ring *ep_ring;
unsigned int slot_id;
int ep_index;
struct xhci_ep_ctx *ep_ctx;
@@ -2016,7 +2015,6 @@ static int process_ctrl_td(struct xhci_hcd *xhci, struct 
xhci_td *td,
slot_id = TRB_TO_SLOT_ID(le32_to_cpu(event->flags));
xdev = xhci->devs[slot_id];
ep_index = TRB_TO_EP_ID(le32_to_cpu(event->flags)) - 1;
-   ep_ring = xhci_dma_to_transfer_ring(ep, le64_to_cpu(event->buffer));
ep_ctx = xhci_get_ep_ctx(xhci, xdev->out_ctx, ep_index);
trb_comp_code = GET_COMP_CODE(le32_to_cpu(event->transfer_len));
requested = td->urb->transfer_buffer_length;
-- 
2.7.4

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 1/2] musb: remove unused frame variable

2017-11-15 Thread Corentin Labbe
This patch fix the following warning
drivers/usb/musb/musb_host.c:223:8: warning: variable 'frame' set but not used 
[-Wunused-but-set-variable]
by remove the frame variable in musb_start_urb().

Signed-off-by: Corentin Labbe 
---
 drivers/usb/musb/musb_host.c | 2 --
 1 file changed, 2 deletions(-)

diff --git a/drivers/usb/musb/musb_host.c b/drivers/usb/musb/musb_host.c
index 2627363fb4fe..aa573ab99384 100644
--- a/drivers/usb/musb/musb_host.c
+++ b/drivers/usb/musb/musb_host.c
@@ -195,7 +195,6 @@ static struct musb_qh *musb_ep_get_qh(struct musb_hw_ep 
*ep, int is_in)
 static void
 musb_start_urb(struct musb *musb, int is_in, struct musb_qh *qh)
 {
-   u16 frame;
u32 len;
void __iomem*mbase =  musb->mregs;
struct urb  *urb = next_urb(qh);
@@ -244,7 +243,6 @@ musb_start_urb(struct musb *musb, int is_in, struct musb_qh 
*qh)
case USB_ENDPOINT_XFER_ISOC:
case USB_ENDPOINT_XFER_INT:
musb_dbg(musb, "check whether there's still time for periodic 
Tx");
-   frame = musb_readw(mbase, MUSB_FRAME);
/* FIXME this doesn't implement that scheduling policy ...
 * or handle framecounter wrapping
 */
-- 
2.13.6

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 2/2] musb: remove unused pipe variable

2017-11-15 Thread Corentin Labbe
This patch fix the following build warning:
drivers/usb/musb/musb_host.c:1809:8: warning: variable 'pipe' set but not used 
[-Wunused-but-set-variable]
by removing the pipe variable in musb_host_rx()

Signed-off-by: Corentin Labbe 
---
 drivers/usb/musb/musb_host.c | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/drivers/usb/musb/musb_host.c b/drivers/usb/musb/musb_host.c
index aa573ab99384..394b4ac86161 100644
--- a/drivers/usb/musb/musb_host.c
+++ b/drivers/usb/musb/musb_host.c
@@ -1779,7 +1779,6 @@ void musb_host_rx(struct musb *musb, u8 epnum)
struct musb_qh  *qh = hw_ep->in_qh;
size_t  xfer_len;
void __iomem*mbase = musb->mregs;
-   int pipe;
u16 rx_csr, val;
booliso_err = false;
booldone = false;
@@ -1808,8 +1807,6 @@ void musb_host_rx(struct musb *musb, u8 epnum)
return;
}
 
-   pipe = urb->pipe;
-
trace_musb_urb_rx(musb, urb);
 
/* check for errors, concurrent stall & unlink is not really
-- 
2.13.6

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH] usb: serial: keyspan: remove unused USB_SERIAL_KEYSPAN_X firmware kconfig

2018-01-22 Thread Corentin Labbe
All USB_SERIAL_KEYSPAN_X are not used anywhere in kernel tree.
Furthermore all firmware files was removed since commit 2971c579f93bi 
("keyspan: use request_firmware()")
So let's clean thoses unused symbols.

Signed-off-by: Corentin Labbe 
---
 drivers/usb/serial/Kconfig | 78 --
 1 file changed, 78 deletions(-)

diff --git a/drivers/usb/serial/Kconfig b/drivers/usb/serial/Kconfig
index a8d5f2e4878d..716a3aa142ff 100644
--- a/drivers/usb/serial/Kconfig
+++ b/drivers/usb/serial/Kconfig
@@ -322,84 +322,6 @@ config USB_SERIAL_KEYSPAN
  To compile this driver as a module, choose M here: the
  module will be called keyspan.
 
-config USB_SERIAL_KEYSPAN_MPR
-   bool "USB Keyspan MPR Firmware"
-   depends on USB_SERIAL_KEYSPAN && FIRMWARE_IN_KERNEL
-   help
- Say Y here to include firmware for the Keyspan MPR converter.
-
-config USB_SERIAL_KEYSPAN_USA28
-   bool "USB Keyspan USA-28 Firmware"
-   depends on USB_SERIAL_KEYSPAN && FIRMWARE_IN_KERNEL
-   help
- Say Y here to include firmware for the USA-28 converter.
-
-config USB_SERIAL_KEYSPAN_USA28X
-   bool "USB Keyspan USA-28X Firmware"
-   depends on USB_SERIAL_KEYSPAN && FIRMWARE_IN_KERNEL
-   help
- Say Y here to include firmware for the USA-28X converter.
- Be sure you have a USA-28X, there are also 28XA and 28XB
- models, the label underneath has the actual part number.
-
-config USB_SERIAL_KEYSPAN_USA28XA
-   bool "USB Keyspan USA-28XA Firmware"
-   depends on USB_SERIAL_KEYSPAN && FIRMWARE_IN_KERNEL
-   help
- Say Y here to include firmware for the USA-28XA converter.
- Be sure you have a USA-28XA, there are also 28X and 28XB
- models, the label underneath has the actual part number.
-
-config USB_SERIAL_KEYSPAN_USA28XB
-   bool "USB Keyspan USA-28XB Firmware"
-   depends on USB_SERIAL_KEYSPAN && FIRMWARE_IN_KERNEL
-   help
- Say Y here to include firmware for the USA-28XB converter.
- Be sure you have a USA-28XB, there are also 28X and 28XA
- models, the label underneath has the actual part number.
-
-config USB_SERIAL_KEYSPAN_USA19
-   bool "USB Keyspan USA-19 Firmware"
-   depends on USB_SERIAL_KEYSPAN && FIRMWARE_IN_KERNEL
-   help
- Say Y here to include firmware for the USA-19 converter.
-
-config USB_SERIAL_KEYSPAN_USA18X
-   bool "USB Keyspan USA-18X Firmware"
-   depends on USB_SERIAL_KEYSPAN && FIRMWARE_IN_KERNEL
-   help
- Say Y here to include firmware for the USA-18X converter.
-
-config USB_SERIAL_KEYSPAN_USA19W
-   bool "USB Keyspan USA-19W Firmware"
-   depends on USB_SERIAL_KEYSPAN && FIRMWARE_IN_KERNEL
-   help
- Say Y here to include firmware for the USA-19W converter.
-
-config USB_SERIAL_KEYSPAN_USA19QW
-   bool "USB Keyspan USA-19QW Firmware"
-   depends on USB_SERIAL_KEYSPAN && FIRMWARE_IN_KERNEL
-   help
- Say Y here to include firmware for the USA-19QW converter.
-
-config USB_SERIAL_KEYSPAN_USA19QI
-   bool "USB Keyspan USA-19QI Firmware"
-   depends on USB_SERIAL_KEYSPAN && FIRMWARE_IN_KERNEL
-   help
- Say Y here to include firmware for the USA-19QI converter.
-
-config USB_SERIAL_KEYSPAN_USA49W
-   bool "USB Keyspan USA-49W Firmware"
-   depends on USB_SERIAL_KEYSPAN && FIRMWARE_IN_KERNEL
-   help
- Say Y here to include firmware for the USA-49W converter.
-
-config USB_SERIAL_KEYSPAN_USA49WLC
-   bool "USB Keyspan USA-49WLC Firmware"
-   depends on USB_SERIAL_KEYSPAN && FIRMWARE_IN_KERNEL
-   help
- Say Y here to include firmware for the USA-49WLC converter.
-
 config USB_SERIAL_KLSI
tristate "USB KL5KUSB105 (Palmconnect) Driver"
---help---
-- 
2.13.6

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH] usb: xhci: ASMedia ASM1042A chipset need shorts TX quirk

2017-05-27 Thread Corentin Labbe
When plugging an USB webcam I see the following message:
[106385.615559] xhci_hcd :04:00.0: WARN Successful completion on short TX: 
needs XHCI_TRUST_TX_LENGTH quirk?
[106390.583860] handle_tx_event: 913 callbacks suppressed

With this patch applied, I get no more printing of this message.

Signed-off-by: Corentin Labbe 
---
 drivers/usb/host/xhci-pci.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/usb/host/xhci-pci.c b/drivers/usb/host/xhci-pci.c
index fcf1f3f63e7a..1bcf971141c0 100644
--- a/drivers/usb/host/xhci-pci.c
+++ b/drivers/usb/host/xhci-pci.c
@@ -201,6 +201,9 @@ static void xhci_pci_quirks(struct device *dev, struct 
xhci_hcd *xhci)
if (pdev->vendor == PCI_VENDOR_ID_ASMEDIA &&
pdev->device == 0x1042)
xhci->quirks |= XHCI_BROKEN_STREAMS;
+   if (pdev->vendor == PCI_VENDOR_ID_ASMEDIA &&
+   pdev->device == 0x1142)
+   xhci->quirks |= XHCI_TRUST_TX_LENGTH;
 
if (pdev->vendor == PCI_VENDOR_ID_TI && pdev->device == 0x8241)
xhci->quirks |= XHCI_LIMIT_ENDPOINT_INTERVAL_7;
-- 
2.13.0

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH v2] usb: host: Replace empty define with do while

2018-09-19 Thread Corentin Labbe
It's dangerous to use empty code define.
Furthermore it lead to the following warning:
"suggest braces around empty body in an « else » statement"

So let's replace emptyness by "do {} while(0)"

Furthermore, as suggested by Joe Perches, rename the macro to INCR.

Signed-off-by: Corentin Labbe 
---
Changes since v1:
- rename the macro from COUNT to INCR

 drivers/usb/host/ehci-hcd.c|  6 +++---
 drivers/usb/host/ehci-q.c  |  4 ++--
 drivers/usb/host/ehci-timer.c  |  2 +-
 drivers/usb/host/ehci.h|  4 ++--
 drivers/usb/host/fotg210-hcd.c | 12 ++--
 drivers/usb/host/fotg210.h |  4 ++--
 6 files changed, 16 insertions(+), 16 deletions(-)

diff --git a/drivers/usb/host/ehci-hcd.c b/drivers/usb/host/ehci-hcd.c
index 8608ac513fb7..64186cf59c33 100644
--- a/drivers/usb/host/ehci-hcd.c
+++ b/drivers/usb/host/ehci-hcd.c
@@ -730,9 +730,9 @@ static irqreturn_t ehci_irq (struct usb_hcd *hcd)
/* normal [4.15.1.2] or error [4.15.1.1] completion */
if (likely ((status & (STS_INT|STS_ERR)) != 0)) {
if (likely ((status & STS_ERR) == 0))
-   COUNT (ehci->stats.normal);
+   INCR(ehci->stats.normal);
else
-   COUNT (ehci->stats.error);
+   INCR(ehci->stats.error);
bh = 1;
}
 
@@ -756,7 +756,7 @@ static irqreturn_t ehci_irq (struct usb_hcd *hcd)
if (cmd & CMD_IAAD)
ehci_dbg(ehci, "IAA with IAAD still set?\n");
if (ehci->iaa_in_progress)
-   COUNT(ehci->stats.iaa);
+   INCR(ehci->stats.iaa);
end_iaa_cycle(ehci);
}
 
diff --git a/drivers/usb/host/ehci-q.c b/drivers/usb/host/ehci-q.c
index 327630405695..aa2f77f1506d 100644
--- a/drivers/usb/host/ehci-q.c
+++ b/drivers/usb/host/ehci-q.c
@@ -245,12 +245,12 @@ ehci_urb_done(struct ehci_hcd *ehci, struct urb *urb, int 
status)
}
 
if (unlikely(urb->unlinked)) {
-   COUNT(ehci->stats.unlink);
+   INCR(ehci->stats.unlink);
} else {
/* report non-error and short read status as zero */
if (status == -EINPROGRESS || status == -EREMOTEIO)
status = 0;
-   COUNT(ehci->stats.complete);
+   INCR(ehci->stats.complete);
}
 
 #ifdef EHCI_URB_TRACE
diff --git a/drivers/usb/host/ehci-timer.c b/drivers/usb/host/ehci-timer.c
index 4fcebda4b79d..a79c8ac0a55f 100644
--- a/drivers/usb/host/ehci-timer.c
+++ b/drivers/usb/host/ehci-timer.c
@@ -347,7 +347,7 @@ static void ehci_iaa_watchdog(struct ehci_hcd *ehci)
 */
status = ehci_readl(ehci, &ehci->regs->status);
if ((status & STS_IAA) || !(cmd & CMD_IAAD)) {
-   COUNT(ehci->stats.lost_iaa);
+   INCR(ehci->stats.lost_iaa);
ehci_writel(ehci, STS_IAA, &ehci->regs->status);
}
 
diff --git a/drivers/usb/host/ehci.h b/drivers/usb/host/ehci.h
index c8e9a48e1d51..ac5e967907d1 100644
--- a/drivers/usb/host/ehci.h
+++ b/drivers/usb/host/ehci.h
@@ -235,9 +235,9 @@ struct ehci_hcd {   /* one per controller */
/* irq statistics */
 #ifdef EHCI_STATS
struct ehci_stats   stats;
-#  define COUNT(x) ((x)++)
+#  define INCR(x) ((x)++)
 #else
-#  define COUNT(x)
+#  define INCR(x) do {} while (0)
 #endif
 
/* debug files */
diff --git a/drivers/usb/host/fotg210-hcd.c b/drivers/usb/host/fotg210-hcd.c
index 058ff82ea789..de43d0d326bc 100644
--- a/drivers/usb/host/fotg210-hcd.c
+++ b/drivers/usb/host/fotg210-hcd.c
@@ -1286,7 +1286,7 @@ static void fotg210_iaa_watchdog(struct fotg210_hcd 
*fotg210)
 */
status = fotg210_readl(fotg210, &fotg210->regs->status);
if ((status & STS_IAA) || !(cmd & CMD_IAAD)) {
-   COUNT(fotg210->stats.lost_iaa);
+   INCR(fotg210->stats.lost_iaa);
fotg210_writel(fotg210, STS_IAA,
&fotg210->regs->status);
}
@@ -2205,12 +2205,12 @@ __acquires(fotg210->lock)
}
 
if (unlikely(urb->unlinked)) {
-   COUNT(fotg210->stats.unlink);
+   INCR(fotg210->stats.unlink);
} else {
/* report non-error and short read status as zero */
if (status == -EINPROGRESS || status == -EREMOTEIO)
status = 0;
-   COUNT(fotg210->stats.complete);
+   INCR(fotg210->stats.complete);
}
 
 #ifdef FOTG210_URB_TRACE
@@ -5154,9 +5154,9 @@ static irqreturn_t fotg210_irq(struct usb_hcd *hcd)
/* normal [4.15.1.2] or error [4.15.1.1] c

[BUG] rmmod g_mass_storage result to segmentation fault

2019-01-08 Thread Corentin Labbe
Hello

When running an imx_defconfig on a imx6q-sabrelite, rmmod g_mass_storage lead 
to the following crash:
[  143.952834] Internal error: Oops: 817 [#1] SMP ARM
[  143.957639] Modules linked in: dmatest psmouse serport da9063_wdt wl12xx 
wl18xx wlcore wlcore_sdio brcmfmac brcmutil mwifiex_sdio mwifiex_pcie mwifiex 
rtl8150 pegasus cdc_eem i2c_algo_pca i2c_algo_pcf echainiv bnep crc_ccitt 
libcrc32c crc7 isofs nls_iso8859_15 udf crc_itu_t msdos binfmt_misc gspca_main 
uvcvideo adv7180 snd_usb_audio snd_hwdep snd_usbmidi_lib usb_f_uac2 usb_f_hid 
usb_f_uac1 u_audio usb_f_obex usb_f_eem usb_f_printer usb_f_uvc usb_f_ecm 
usb_f_midi snd_rawmidi usb_f_ecm_subset usb_f_ss_lb usb_f_serial usb_f_ncm 
g_ffs usb_f_fs g_zero g_audio g_mass_storage(-) usb_f_mass_storage usb_f_rndis 
u_ether usb_f_acm u_serial libcomposite configfs usb_wwan usbserial imx_vdoa 
videobuf2_vmalloc [last unloaded: g_ncm]
[  144.021308] CPU: 3 PID: 9158 Comm: rmmod Not tainted 5.0.0-rc1-next-20190108 
#1
[  144.028623] Hardware name: Freescale i.MX6 Quad/DualLite (Device Tree)
[  144.035170] PC is at usb_gadget_unregister_driver+0xac/0xd4
[  144.040748] LR is at 0x1242afc4
[  144.043895] pc : []lr : [<1242afc4>]psr: 6013
[  144.050166] sp : ed0e7f48  ip : a54b4ce2  fp : 
[  144.055396] r10: 0081  r9 : ed0e6000  r8 : c01011c4
[  144.060626] r7 : 0081  r6 : bec49b98  r5 : bf12916c  r4 : c129176c
[  144.067159] r3 : 0200  r2 : 0100  r1 : 0200  r0 : 0100
[  144.073693] Flags: nZCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment none
[  144.080833] Control: 10c5387d  Table: 3d33404a  DAC: 0051
[  144.086585] Process rmmod (pid: 9158, stack limit = 0x2ac398d3)
[  144.092510] Stack: (0xed0e7f48 to 0xed0e8000)
[  144.096877] 7f40:   bf129200 c120c908 bec49b98 c01c965c 
616d5f67 735f7373
[  144.105063] 7f60: 61726f74 b6006567 0017 c01175c8 b6f114c8 ed0e7fb0 
bec49e14 000a1a98
[  144.113249] 7f80: bec49b7c c0117aec  c33d43a5 000278d4 c33d43a5 
000278d4 616d5f67
[  144.121435] 7fa0: 735f7373 c0101000 000278d4 616d5f67 bec49b98 0880 
 bec49e18
[  144.129621] 7fc0: 000278d4 616d5f67 735f7373 0081   
b6faf000 
[  144.137807] 7fe0: bec49b90 bec49b80 000277b8 b6eb52f0 6010 bec49b98 
 
[  144.146006] [] (usb_gadget_unregister_driver) from [] 
(sys_delete_module+0x130/0x1dc)
[  144.155586] [] (sys_delete_module) from [] 
(ret_fast_syscall+0x0/0x28)
[  144.163855] Exception stack(0xed0e7fa8 to 0xed0e7ff0)
[  144.168914] 7fa0:   000278d4 616d5f67 bec49b98 0880 
 bec49e18
[  144.177100] 7fc0: 000278d4 616d5f67 735f7373 0081   
b6faf000 
[  144.185283] 7fe0: bec49b90 bec49b80 000277b8 b6eb52f0
[  144.190344] Code: e5953070 e595206c e3a00c01 e3a01c02 (e5823004) 
[  144.196538] ---[ end trace 86952e6cc74d8e8b ]---
Segmentation fault

Regards