On 22 May 2013 19:50, Alan Stern <[email protected]> wrote:
> On Wed, 22 May 2013, Sachin Kamat wrote:
>
>> 'hcd' is dereferenced before NULL check. Move the assignment after
>> the check to avoid potential NULL pointer dereferencing error.
>
> Since the pointer in question can never be NULL, you should remove the
> check entirely instead of moving the reference.
OK.
>
> Furthermore, the reference you are moving is not a dereference, so it
> won't cause a problem even if the pointer is NULL.
Actually the dereferencing is quite obscure happening inside the nested calls.
>
>> diff --git a/drivers/usb/host/ehci-spear.c b/drivers/usb/host/ehci-spear.c
>> index f5ac4e2..326bfea 100644
>> --- a/drivers/usb/host/ehci-spear.c
>> +++ b/drivers/usb/host/ehci-spear.c
>> @@ -146,10 +146,13 @@ fail:
>> static int spear_ehci_hcd_drv_remove(struct platform_device *pdev)
>> {
>> struct usb_hcd *hcd = platform_get_drvdata(pdev);
>> - struct spear_ehci *sehci = to_spear_ehci(hcd);
>> + struct spear_ehci *sehci;
>>
>> if (!hcd)
>> return 0;
>> +
>> + sehci = to_spear_ehci(hcd);
>> +
>> if (in_interrupt())
>> BUG();
>
> You can remove this test also. This routine will never be called
> in_interrupt.
OK.
I will spin a new patch with your suggested changes.
Thanks for reviewing.
--
With warm regards,
Sachin
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html