2015-11-06 12:16:40

by Saurabh Sengar

[permalink] [raw]
Subject: [PATCH] usb: host: pci_quirks: fix memory leak, by adding iounmap

added iounmap inorder to free memory mapped to base before returning

Signed-off-by: Saurabh Sengar <[email protected]>
---
drivers/usb/host/pci-quirks.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/usb/host/pci-quirks.c b/drivers/usb/host/pci-quirks.c
index f940056..332f687 100644
--- a/drivers/usb/host/pci-quirks.c
+++ b/drivers/usb/host/pci-quirks.c
@@ -990,7 +990,7 @@ static void quirk_usb_handoff_xhci(struct pci_dev *pdev)
/* We're reading garbage from the controller */
dev_warn(&pdev->dev,
"xHCI controller failing to respond");
- return;
+ goto iounmap;
}

if (!ext_cap_offset)
@@ -1061,7 +1061,7 @@ hc_init:
"xHCI HW did not halt within %d usec status = 0x%x\n",
XHCI_MAX_HALT_USEC, val);
}
-
+iounmap:
iounmap(base);
}

--
1.9.1


2015-11-30 06:28:43

by Saurabh Sengar

[permalink] [raw]
Subject: Re: [PATCH] usb: host: pci_quirks: fix memory leak, by adding iounmap

pinging in case this patch is lost.


On 6 November 2015 at 17:46, Saurabh Sengar <[email protected]> wrote:
> added iounmap inorder to free memory mapped to base before returning
>
> Signed-off-by: Saurabh Sengar <[email protected]>
> ---
> drivers/usb/host/pci-quirks.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/usb/host/pci-quirks.c b/drivers/usb/host/pci-quirks.c
> index f940056..332f687 100644
> --- a/drivers/usb/host/pci-quirks.c
> +++ b/drivers/usb/host/pci-quirks.c
> @@ -990,7 +990,7 @@ static void quirk_usb_handoff_xhci(struct pci_dev *pdev)
> /* We're reading garbage from the controller */
> dev_warn(&pdev->dev,
> "xHCI controller failing to respond");
> - return;
> + goto iounmap;
> }
>
> if (!ext_cap_offset)
> @@ -1061,7 +1061,7 @@ hc_init:
> "xHCI HW did not halt within %d usec status = 0x%x\n",
> XHCI_MAX_HALT_USEC, val);
> }
> -
> +iounmap:
> iounmap(base);
> }
>
> --
> 1.9.1
>

2015-11-30 09:00:04

by Mathias Nyman

[permalink] [raw]
Subject: Re: [PATCH] usb: host: pci_quirks: fix memory leak, by adding iounmap

On 30.11.2015 08:28, Saurabh Sengar wrote:
> pinging in case this patch is lost.
>
>
> On 6 November 2015 at 17:46, Saurabh Sengar <[email protected]> wrote:
>> added iounmap inorder to free memory mapped to base before returning
>>
>> Signed-off-by: Saurabh Sengar <[email protected]>
>> ---
>> drivers/usb/host/pci-quirks.c | 4 ++--
>> 1 file changed, 2 insertions(+), 2 deletions(-)
>>
>> diff --git a/drivers/usb/host/pci-quirks.c b/drivers/usb/host/pci-quirks.c
>> index f940056..332f687 100644
>> --- a/drivers/usb/host/pci-quirks.c
>> +++ b/drivers/usb/host/pci-quirks.c
>> @@ -990,7 +990,7 @@ static void quirk_usb_handoff_xhci(struct pci_dev *pdev)
>> /* We're reading garbage from the controller */
>> dev_warn(&pdev->dev,
>> "xHCI controller failing to respond");
>> - return;
>> + goto iounmap;
>> }
>>
>> if (!ext_cap_offset)
>> @@ -1061,7 +1061,7 @@ hc_init:
>> "xHCI HW did not halt within %d usec status = 0x%x\n",
>> XHCI_MAX_HALT_USEC, val);
>> }
>> -
>> +iounmap:
>> iounmap(base);
>> }
>>
>> --
>> 1.9.1
>>

Thanks, I'll add it send it forward soon

-Mathias

2015-12-01 22:35:09

by Greg Kroah-Hartman

[permalink] [raw]
Subject: Re: [PATCH] usb: host: pci_quirks: fix memory leak, by adding iounmap

On Fri, Nov 06, 2015 at 05:46:30PM +0530, Saurabh Sengar wrote:
> added iounmap inorder to free memory mapped to base before returning
>
> Signed-off-by: Saurabh Sengar <[email protected]>
> ---
> drivers/usb/host/pci-quirks.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/usb/host/pci-quirks.c b/drivers/usb/host/pci-quirks.c
> index f940056..332f687 100644
> --- a/drivers/usb/host/pci-quirks.c
> +++ b/drivers/usb/host/pci-quirks.c
> @@ -990,7 +990,7 @@ static void quirk_usb_handoff_xhci(struct pci_dev *pdev)
> /* We're reading garbage from the controller */
> dev_warn(&pdev->dev,
> "xHCI controller failing to respond");
> - return;
> + goto iounmap;
> }
>
> if (!ext_cap_offset)
> @@ -1061,7 +1061,7 @@ hc_init:
> "xHCI HW did not halt within %d usec status = 0x%x\n",
> XHCI_MAX_HALT_USEC, val);
> }
> -
> +iounmap:
> iounmap(base);
> }
>

Does not apply to the tree :(

2015-12-02 03:38:09

by Saurabh Sengar

[permalink] [raw]
Subject: Re: [PATCH] usb: host: pci_quirks: fix memory leak, by adding iounmap

On 2 December 2015 at 04:05, Greg KH <[email protected]> wrote:
> On Fri, Nov 06, 2015 at 05:46:30PM +0530, Saurabh Sengar wrote:
>> added iounmap inorder to free memory mapped to base before returning
>>
>> Signed-off-by: Saurabh Sengar <[email protected]>
>> ---
>> drivers/usb/host/pci-quirks.c | 4 ++--
>> 1 file changed, 2 insertions(+), 2 deletions(-)
>>
>> diff --git a/drivers/usb/host/pci-quirks.c b/drivers/usb/host/pci-quirks.c
>> index f940056..332f687 100644
>> --- a/drivers/usb/host/pci-quirks.c
>> +++ b/drivers/usb/host/pci-quirks.c
>> @@ -990,7 +990,7 @@ static void quirk_usb_handoff_xhci(struct pci_dev *pdev)
>> /* We're reading garbage from the controller */
>> dev_warn(&pdev->dev,
>> "xHCI controller failing to respond");
>> - return;
>> + goto iounmap;
>> }
>>
>> if (!ext_cap_offset)
>> @@ -1061,7 +1061,7 @@ hc_init:
>> "xHCI HW did not halt within %d usec status = 0x%x\n",
>> XHCI_MAX_HALT_USEC, val);
>> }
>> -
>> +iounmap:
>> iounmap(base);
>> }
>>
>
> Does not apply to the tree :(


This patch applies fine on top of
"git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git".
Just now only I have re-verified.
Am I expected to send this patch on top of some other git tree/branch ?

2015-12-02 15:45:19

by Greg Kroah-Hartman

[permalink] [raw]
Subject: Re: [PATCH] usb: host: pci_quirks: fix memory leak, by adding iounmap

On Wed, Dec 02, 2015 at 09:08:06AM +0530, Saurabh Sengar wrote:
> On 2 December 2015 at 04:05, Greg KH <[email protected]> wrote:
> > On Fri, Nov 06, 2015 at 05:46:30PM +0530, Saurabh Sengar wrote:
> >> added iounmap inorder to free memory mapped to base before returning
> >>
> >> Signed-off-by: Saurabh Sengar <[email protected]>
> >> ---
> >> drivers/usb/host/pci-quirks.c | 4 ++--
> >> 1 file changed, 2 insertions(+), 2 deletions(-)
> >>
> >> diff --git a/drivers/usb/host/pci-quirks.c b/drivers/usb/host/pci-quirks.c
> >> index f940056..332f687 100644
> >> --- a/drivers/usb/host/pci-quirks.c
> >> +++ b/drivers/usb/host/pci-quirks.c
> >> @@ -990,7 +990,7 @@ static void quirk_usb_handoff_xhci(struct pci_dev *pdev)
> >> /* We're reading garbage from the controller */
> >> dev_warn(&pdev->dev,
> >> "xHCI controller failing to respond");
> >> - return;
> >> + goto iounmap;
> >> }
> >>
> >> if (!ext_cap_offset)
> >> @@ -1061,7 +1061,7 @@ hc_init:
> >> "xHCI HW did not halt within %d usec status = 0x%x\n",
> >> XHCI_MAX_HALT_USEC, val);
> >> }
> >> -
> >> +iounmap:
> >> iounmap(base);
> >> }
> >>
> >
> > Does not apply to the tree :(
>
>
> This patch applies fine on top of
> "git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git".
> Just now only I have re-verified.
> Am I expected to send this patch on top of some other git tree/branch ?

It will end up going in the usb.git tree, on the usb-next branch, and it
conflicts with other xhci patches that just landed there ahead of yours.
So it's not your fault, you did the right thing, just others also did
work here so you need to redo yours as well, a normal thing in kernel
development :)

hope this helps explain things.

thanks,

greg k-h

2015-12-02 15:55:56

by Saurabh Sengar

[permalink] [raw]
Subject: Re: [PATCH] usb: host: pci_quirks: fix memory leak, by adding iounmap

Hi Greg,

I am little unclear.
Now, shall I resend my patch on top of usb.git tree or linux.git tree.

Regards,
Saurabh

On 2 December 2015 at 21:15, Greg KH <[email protected]> wrote:
> On Wed, Dec 02, 2015 at 09:08:06AM +0530, Saurabh Sengar wrote:
>> On 2 December 2015 at 04:05, Greg KH <[email protected]> wrote:
>> > On Fri, Nov 06, 2015 at 05:46:30PM +0530, Saurabh Sengar wrote:
>> >> added iounmap inorder to free memory mapped to base before returning
>> >>
>> >> Signed-off-by: Saurabh Sengar <[email protected]>
>> >> ---
>> >> drivers/usb/host/pci-quirks.c | 4 ++--
>> >> 1 file changed, 2 insertions(+), 2 deletions(-)
>> >>
>> >> diff --git a/drivers/usb/host/pci-quirks.c b/drivers/usb/host/pci-quirks.c
>> >> index f940056..332f687 100644
>> >> --- a/drivers/usb/host/pci-quirks.c
>> >> +++ b/drivers/usb/host/pci-quirks.c
>> >> @@ -990,7 +990,7 @@ static void quirk_usb_handoff_xhci(struct pci_dev *pdev)
>> >> /* We're reading garbage from the controller */
>> >> dev_warn(&pdev->dev,
>> >> "xHCI controller failing to respond");
>> >> - return;
>> >> + goto iounmap;
>> >> }
>> >>
>> >> if (!ext_cap_offset)
>> >> @@ -1061,7 +1061,7 @@ hc_init:
>> >> "xHCI HW did not halt within %d usec status = 0x%x\n",
>> >> XHCI_MAX_HALT_USEC, val);
>> >> }
>> >> -
>> >> +iounmap:
>> >> iounmap(base);
>> >> }
>> >>
>> >
>> > Does not apply to the tree :(
>>
>>
>> This patch applies fine on top of
>> "git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git".
>> Just now only I have re-verified.
>> Am I expected to send this patch on top of some other git tree/branch ?
>
> It will end up going in the usb.git tree, on the usb-next branch, and it
> conflicts with other xhci patches that just landed there ahead of yours.
> So it's not your fault, you did the right thing, just others also did
> work here so you need to redo yours as well, a normal thing in kernel
> development :)
>
> hope this helps explain things.
>
> thanks,
>
> greg k-h

2015-12-02 16:29:27

by Greg Kroah-Hartman

[permalink] [raw]
Subject: Re: [PATCH] usb: host: pci_quirks: fix memory leak, by adding iounmap

On Wed, Dec 02, 2015 at 09:25:53PM +0530, Saurabh Sengar wrote:
> Hi Greg,
>
> I am little unclear.
> Now, shall I resend my patch on top of usb.git tree or linux.git tree.

The usb-next branch of the usb.git tree please.

2015-12-02 17:22:06

by Saurabh Sengar

[permalink] [raw]
Subject: [PATCH v2] usb: host: pci_quirks: fix memory leak, by adding iounmap

added iounmap inorder to free memory mapped to base before returning

Signed-off-by: Saurabh Sengar <[email protected]>
---
v2: changed logic a bit, because of recent patches pushed to usb-next
drivers/usb/host/pci-quirks.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/usb/host/pci-quirks.c b/drivers/usb/host/pci-quirks.c
index 26cb8c8..2ac198c 100644
--- a/drivers/usb/host/pci-quirks.c
+++ b/drivers/usb/host/pci-quirks.c
@@ -992,7 +992,7 @@ static void quirk_usb_handoff_xhci(struct pci_dev *pdev)
if ((ext_cap_offset + sizeof(val)) > len) {
/* We're reading garbage from the controller */
dev_warn(&pdev->dev, "xHCI controller failing to respond");
- return;
+ goto hc_init;
}
val = readl(base + ext_cap_offset);

--
1.9.1

2015-12-04 16:23:17

by Greg Kroah-Hartman

[permalink] [raw]
Subject: Re: [PATCH v2] usb: host: pci_quirks: fix memory leak, by adding iounmap

On Wed, Dec 02, 2015 at 10:51:37PM +0530, Saurabh Sengar wrote:
> added iounmap inorder to free memory mapped to base before returning
>
> Signed-off-by: Saurabh Sengar <[email protected]>
> ---
> v2: changed logic a bit, because of recent patches pushed to usb-next
> drivers/usb/host/pci-quirks.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/usb/host/pci-quirks.c b/drivers/usb/host/pci-quirks.c
> index 26cb8c8..2ac198c 100644
> --- a/drivers/usb/host/pci-quirks.c
> +++ b/drivers/usb/host/pci-quirks.c
> @@ -992,7 +992,7 @@ static void quirk_usb_handoff_xhci(struct pci_dev *pdev)
> if ((ext_cap_offset + sizeof(val)) > len) {
> /* We're reading garbage from the controller */
> dev_warn(&pdev->dev, "xHCI controller failing to respond");
> - return;
> + goto hc_init;

Are you sure this is correct? That goto location then does a whole
bunch of things with the xhci controller that you just now determined is
failing to respond. I can't take this as-is, sorry.

greg k-h

2015-12-04 16:31:57

by Saurabh Sengar

[permalink] [raw]
Subject: Re: [PATCH v2] usb: host: pci_quirks: fix memory leak, by adding iounmap

On 4 December 2015 at 21:53, Greg KH <[email protected]> wrote:
> On Wed, Dec 02, 2015 at 10:51:37PM +0530, Saurabh Sengar wrote:
>> added iounmap inorder to free memory mapped to base before returning
>>
>> Signed-off-by: Saurabh Sengar <[email protected]>
>> ---
>> v2: changed logic a bit, because of recent patches pushed to usb-next
>> drivers/usb/host/pci-quirks.c | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/drivers/usb/host/pci-quirks.c b/drivers/usb/host/pci-quirks.c
>> index 26cb8c8..2ac198c 100644
>> --- a/drivers/usb/host/pci-quirks.c
>> +++ b/drivers/usb/host/pci-quirks.c
>> @@ -992,7 +992,7 @@ static void quirk_usb_handoff_xhci(struct pci_dev *pdev)
>> if ((ext_cap_offset + sizeof(val)) > len) {
>> /* We're reading garbage from the controller */
>> dev_warn(&pdev->dev, "xHCI controller failing to respond");
>> - return;
>> + goto hc_init;
>
> Are you sure this is correct? That goto location then does a whole
> bunch of things with the xhci controller that you just now determined is
> failing to respond. I can't take this as-is, sorry.
>
> greg k-h

Yes I agree, and in the first patch I didn't do this way.
But the latest patch which got introduced is doing "goto hc_init" at line 990

ext_cap_offset = xhci_find_next_ext_cap(base, 0, XHCI_EXT_CAPS_LEGACY);

if (!ext_cap_offset)
goto hc_init;

I think this is wrong too, may be I am wrong.

Any way I will send the first patch again on top of usb-next as v3

2015-12-04 16:58:00

by Saurabh Sengar

[permalink] [raw]
Subject: [PATCH v3] usb: host: pci_quirks: fix memory leak, by adding iounmap

added iounmap inorder to free memory mapped to base before returning

Signed-off-by: Saurabh Sengar <[email protected]>
---
v3: reverted to v1 logic, on top of usb-next branch
drivers/usb/host/pci-quirks.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/usb/host/pci-quirks.c b/drivers/usb/host/pci-quirks.c
index 26cb8c8..35af362 100644
--- a/drivers/usb/host/pci-quirks.c
+++ b/drivers/usb/host/pci-quirks.c
@@ -992,7 +992,7 @@ static void quirk_usb_handoff_xhci(struct pci_dev *pdev)
if ((ext_cap_offset + sizeof(val)) > len) {
/* We're reading garbage from the controller */
dev_warn(&pdev->dev, "xHCI controller failing to respond");
- return;
+ goto iounmap;
}
val = readl(base + ext_cap_offset);

@@ -1055,6 +1055,7 @@ hc_init:
XHCI_MAX_HALT_USEC, val);
}

+iounmap:
iounmap(base);
}

--
1.9.1