Re: [balbi-usb:merge-result-for-greg 66/99] drivers/usb/core/hub.c:2654 usb_get_hub_port_power_state() error: doing dma on the stack ((null))

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, 12 Sep 2012, Fengguang Wu wrote:

> Hi Felipe,
> 
> FYI, there are new smatch warnings show up in
> 
> tree:   git://git.kernel.org/pub/scm/linux/kernel/git/balbi/usb.git merge-result-for-greg
> head:   23953bde3e4d6aa8780dc054f6ad9882ac63f4f4
> commit: e918fa161f510136fce45a524e934fe20e62c8b1 [66/99] Merge tag 'gadget-for-v3.7' into merge-result-for-greg
> 
> drivers/usb/core/hub.c:2654 usb_get_hub_port_power_state() error: doing dma on the stack ((null))
> drivers/usb/core/hub.c:4733 store_port_power_control() info: why not propagate 'ret' from set_port_feature() instead of -5?
> drivers/usb/core/hub.c:4744 store_port_power_control() info: why not propagate 'ret' from clear_port_feature() instead of -5?
> 
> vim +2654 drivers/usb/core/hub.c
>   2644		return ret;
>   2645	}
>   2646	
>   2647	static int usb_get_hub_port_power_state(struct usb_device *hdev, int port1)
>   2648	{
>   2649		struct usb_hub *hub = hdev_to_hub(hdev);
>   2650		struct usb_port_status data;
>   2651		u16 portstatus;
>   2652		int ret;
>   2653	
> > 2654		ret = get_port_status(hub->hdev, port1, &data);
>   2655		if (ret < 4) {
>   2656			dev_err(hub->intfdev,
>   2657				"%s failed (err = %d)\n", __func__, ret);
>   2658			if (ret >= 0)
>   2659				ret = -EIO;
>   2660			return ret;
>   2661		} else
>   2662			portstatus = le16_to_cpu(data.wPortStatus);
>   2663		return port_is_power_on(hub, portstatus);
>   2664	}

This is a real problem.  It looks like it really is necessary to call
hub_port_status() here, not get_port_status().  Would you like to fix
this?

The reason for changing the return codes from clear_port_feature() and 
set_port_feature() is simple.  The values they return are meant for 
internal use within the kernel, whereas the return code from 
store_port_power_control() will be passed back to userspace.

Alan Stern

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


[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux