mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-27 22:24:11 +08:00
usb: interface authorization: SysFS part of USB interface authorization
This introduces an attribute for each interface to authorize (1) or deauthorize (0) it: /sys/bus/usb/devices/INTERFACE/authorized Signed-off-by: Stefan Koch <stefan.koch10@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
b3910cef39
commit
310d2b4124
@ -957,6 +957,41 @@ static ssize_t supports_autosuspend_show(struct device *dev,
|
||||
}
|
||||
static DEVICE_ATTR_RO(supports_autosuspend);
|
||||
|
||||
/*
|
||||
* interface_authorized_show - show authorization status of an USB interface
|
||||
* 1 is authorized, 0 is deauthorized
|
||||
*/
|
||||
static ssize_t interface_authorized_show(struct device *dev,
|
||||
struct device_attribute *attr, char *buf)
|
||||
{
|
||||
struct usb_interface *intf = to_usb_interface(dev);
|
||||
|
||||
return sprintf(buf, "%u\n", intf->authorized);
|
||||
}
|
||||
|
||||
/*
|
||||
* interface_authorized_store - authorize or deauthorize an USB interface
|
||||
*/
|
||||
static ssize_t interface_authorized_store(struct device *dev,
|
||||
struct device_attribute *attr, const char *buf, size_t count)
|
||||
{
|
||||
struct usb_interface *intf = to_usb_interface(dev);
|
||||
bool val;
|
||||
|
||||
if (strtobool(buf, &val) != 0)
|
||||
return -EINVAL;
|
||||
|
||||
if (val)
|
||||
usb_authorize_interface(intf);
|
||||
else
|
||||
usb_deauthorize_interface(intf);
|
||||
|
||||
return count;
|
||||
}
|
||||
static struct device_attribute dev_attr_interface_authorized =
|
||||
__ATTR(authorized, S_IRUGO | S_IWUSR,
|
||||
interface_authorized_show, interface_authorized_store);
|
||||
|
||||
static struct attribute *intf_attrs[] = {
|
||||
&dev_attr_bInterfaceNumber.attr,
|
||||
&dev_attr_bAlternateSetting.attr,
|
||||
@ -966,6 +1001,7 @@ static struct attribute *intf_attrs[] = {
|
||||
&dev_attr_bInterfaceProtocol.attr,
|
||||
&dev_attr_modalias.attr,
|
||||
&dev_attr_supports_autosuspend.attr,
|
||||
&dev_attr_interface_authorized.attr,
|
||||
NULL,
|
||||
};
|
||||
static struct attribute_group intf_attr_grp = {
|
||||
|
Loading…
Reference in New Issue
Block a user