Commit 2a7a10b8 authored by Igor Kotrasinski's avatar Igor Kotrasinski Committed by Greg Kroah-Hartman

usbip: vudc: make dev_desc attribute binary

We read a struct usb_device_descriptor from it, so make it an actual
binary attribute.
Signed-off-by: default avatarIgor Kotrasinski <i.kotrasinsk@gmail.com>
Signed-off-by: default avatarKrzysztof Opasiak <k.opasiak@samsung.com>
Tested-by: default avatarKrzysztof Opasiak <k.opasiak@samsung.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 0c1849a8
...@@ -78,10 +78,13 @@ int get_gadget_descs(struct vudc *udc) ...@@ -78,10 +78,13 @@ int get_gadget_descs(struct vudc *udc)
/* /*
* Exposes device descriptor from the gadget driver. * Exposes device descriptor from the gadget driver.
*/ */
static ssize_t dev_desc_show(struct device *dev, static ssize_t dev_desc_read(struct file *file, struct kobject *kobj,
struct device_attribute *attr, char *out) struct bin_attribute *attr, char *out,
loff_t off, size_t count)
{ {
struct device *dev = kobj_to_dev(kobj);
struct vudc *udc = (struct vudc *)dev_get_drvdata(dev); struct vudc *udc = (struct vudc *)dev_get_drvdata(dev);
char *desc_ptr = (char *) &udc->dev_desc;
unsigned long flags; unsigned long flags;
int ret; int ret;
...@@ -91,13 +94,13 @@ static ssize_t dev_desc_show(struct device *dev, ...@@ -91,13 +94,13 @@ static ssize_t dev_desc_show(struct device *dev,
goto unlock; goto unlock;
} }
memcpy(out, &udc->dev_desc, sizeof(udc->dev_desc)); memcpy(out, desc_ptr + off, count);
ret = sizeof(udc->dev_desc); ret = count;
unlock: unlock:
spin_unlock_irqrestore(&udc->lock, flags); spin_unlock_irqrestore(&udc->lock, flags);
return ret; return ret;
} }
static DEVICE_ATTR_RO(dev_desc); static BIN_ATTR_RO(dev_desc, sizeof(struct usb_device_descriptor));
static ssize_t store_sockfd(struct device *dev, struct device_attribute *attr, static ssize_t store_sockfd(struct device *dev, struct device_attribute *attr,
const char *in, size_t count) const char *in, size_t count)
...@@ -210,12 +213,17 @@ static ssize_t usbip_status_show(struct device *dev, ...@@ -210,12 +213,17 @@ static ssize_t usbip_status_show(struct device *dev,
static DEVICE_ATTR_RO(usbip_status); static DEVICE_ATTR_RO(usbip_status);
static struct attribute *dev_attrs[] = { static struct attribute *dev_attrs[] = {
&dev_attr_dev_desc.attr,
&dev_attr_usbip_sockfd.attr, &dev_attr_usbip_sockfd.attr,
&dev_attr_usbip_status.attr, &dev_attr_usbip_status.attr,
NULL, NULL,
}; };
static struct bin_attribute *dev_bin_attrs[] = {
&bin_attr_dev_desc,
NULL,
};
const struct attribute_group vudc_attr_group = { const struct attribute_group vudc_attr_group = {
.attrs = dev_attrs, .attrs = dev_attrs,
.bin_attrs = dev_bin_attrs,
}; };
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment