Re: [PATCH 2/5] usbdevfs: Add a USBDEVFS_GET_CAPABILITIES ioctl

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

 



On Mon, 2 Jul 2012, Hans de Goede wrote:

> There are a few (new) usbdevfs capabilities which an application cannot
> discover in any other way then checking the kernel version. There are 3
> problems with this:
> 1) It is just not very pretty
> 2) Given the tendency of enterprise distros to backport stuff it is not
>    reliable
> 3) Some of these features turn out to not work with certain host controllers,
>    making depending on them based on the kernel version not a good idea
> 
> This patch besides adding the new ioctl also adds flags the following existing
> capabilities:
> 
> USBDEVFS_CAP_ZERO_PACKET,        available since 2.6.31
> USBDEVFS_CAP_BULK_CONTINUATION,  available since 2.6.32, except for XHCI
> USBDEVFS_CAP_NO_PACKET_SIZE_LIM, available since 3.3
> 
> Signed-off-by: Hans de Goede <hdegoede@xxxxxxxxxx>

Whoops!  Just one little problem:

> diff --git a/drivers/usb/core/devio.c b/drivers/usb/core/devio.c
> index 5c15acd..3807ea6 100644
> --- a/drivers/usb/core/devio.c
> +++ b/drivers/usb/core/devio.c
> @@ -1818,6 +1818,19 @@ static int proc_release_port(struct dev_state *ps, void __user *arg)
>  	return usb_hub_release_port(ps->dev, portnum, ps);
>  }
>  
> +static int proc_get_capabilities(struct dev_state *ps, void __user *arg)
> +{
> +	__u32 caps;
> +
> +	caps = USBDEVFS_CAP_ZERO_PACKET | USBDEVFS_CAP_NO_PACKET_SIZE_LIM;
> +	caps |= USBDEVFS_CAP_BULK_CONTINUATION;
> +
> +	if (put_user(caps, (__u32 __user *)arg))
> +		return -EFAULT;
> +
> +	return caps;
> +}

This should return 0, not caps.

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