aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/core/sysfs.c
diff options
context:
space:
mode:
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>2013-08-23 19:05:26 -0400
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2013-08-25 18:12:03 -0400
commitd03f254f2ee2a708af9a7347402d9aed7f6cc4c1 (patch)
treef07afa1896e3d87385f3aa0bcc475ed5874ac210 /drivers/usb/core/sysfs.c
parent598d03610a0169eb88d2b08d6743be31b3b9c258 (diff)
USB: core: be specific about attribute permissions
Instead of having to audit all sysfs attributes, to ensure we get them right, use the default macros the driver core provides us (read-only, read-write) to make the code simpler, and to prevent any mistakes from ever happening. Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/usb/core/sysfs.c')
-rw-r--r--drivers/usb/core/sysfs.c303
1 files changed, 139 insertions, 164 deletions
diff --git a/drivers/usb/core/sysfs.c b/drivers/usb/core/sysfs.c
index d9284b998bd7..6d2c8edb1ffe 100644
--- a/drivers/usb/core/sysfs.c
+++ b/drivers/usb/core/sysfs.c
@@ -18,8 +18,8 @@
18 18
19/* Active configuration fields */ 19/* Active configuration fields */
20#define usb_actconfig_show(field, format_string) \ 20#define usb_actconfig_show(field, format_string) \
21static ssize_t show_##field(struct device *dev, \ 21static ssize_t field##_show(struct device *dev, \
22 struct device_attribute *attr, char *buf) \ 22 struct device_attribute *attr, char *buf) \
23{ \ 23{ \
24 struct usb_device *udev; \ 24 struct usb_device *udev; \
25 struct usb_host_config *actconfig; \ 25 struct usb_host_config *actconfig; \
@@ -35,12 +35,12 @@ static ssize_t show_##field(struct device *dev, \
35 35
36#define usb_actconfig_attr(field, format_string) \ 36#define usb_actconfig_attr(field, format_string) \
37 usb_actconfig_show(field, format_string) \ 37 usb_actconfig_show(field, format_string) \
38 static DEVICE_ATTR(field, S_IRUGO, show_##field, NULL); 38 static DEVICE_ATTR_RO(field)
39 39
40usb_actconfig_attr(bNumInterfaces, "%2d\n") 40usb_actconfig_attr(bNumInterfaces, "%2d\n");
41usb_actconfig_attr(bmAttributes, "%2x\n") 41usb_actconfig_attr(bmAttributes, "%2x\n");
42 42
43static ssize_t show_bMaxPower(struct device *dev, 43static ssize_t bMaxPower_show(struct device *dev,
44 struct device_attribute *attr, char *buf) 44 struct device_attribute *attr, char *buf)
45{ 45{
46 struct usb_device *udev; 46 struct usb_device *udev;
@@ -52,9 +52,9 @@ static ssize_t show_bMaxPower(struct device *dev,
52 return 0; 52 return 0;
53 return sprintf(buf, "%dmA\n", usb_get_max_power(udev, actconfig)); 53 return sprintf(buf, "%dmA\n", usb_get_max_power(udev, actconfig));
54} 54}
55static DEVICE_ATTR(bMaxPower, S_IRUGO, show_bMaxPower, NULL); 55static DEVICE_ATTR_RO(bMaxPower);
56 56
57static ssize_t show_configuration_string(struct device *dev, 57static ssize_t configuration_show(struct device *dev,
58 struct device_attribute *attr, char *buf) 58 struct device_attribute *attr, char *buf)
59{ 59{
60 struct usb_device *udev; 60 struct usb_device *udev;
@@ -66,14 +66,14 @@ static ssize_t show_configuration_string(struct device *dev,
66 return 0; 66 return 0;
67 return sprintf(buf, "%s\n", actconfig->string); 67 return sprintf(buf, "%s\n", actconfig->string);
68} 68}
69static DEVICE_ATTR(configuration, S_IRUGO, show_configuration_string, NULL); 69static DEVICE_ATTR_RO(configuration);
70 70
71/* configuration value is always present, and r/w */ 71/* configuration value is always present, and r/w */
72usb_actconfig_show(bConfigurationValue, "%u\n"); 72usb_actconfig_show(bConfigurationValue, "%u\n");
73 73
74static ssize_t 74static ssize_t bConfigurationValue_store(struct device *dev,
75set_bConfigurationValue(struct device *dev, struct device_attribute *attr, 75 struct device_attribute *attr,
76 const char *buf, size_t count) 76 const char *buf, size_t count)
77{ 77{
78 struct usb_device *udev = to_usb_device(dev); 78 struct usb_device *udev = to_usb_device(dev);
79 int config, value; 79 int config, value;
@@ -85,13 +85,12 @@ set_bConfigurationValue(struct device *dev, struct device_attribute *attr,
85 usb_unlock_device(udev); 85 usb_unlock_device(udev);
86 return (value < 0) ? value : count; 86 return (value < 0) ? value : count;
87} 87}
88
89static DEVICE_ATTR_IGNORE_LOCKDEP(bConfigurationValue, S_IRUGO | S_IWUSR, 88static DEVICE_ATTR_IGNORE_LOCKDEP(bConfigurationValue, S_IRUGO | S_IWUSR,
90 show_bConfigurationValue, set_bConfigurationValue); 89 bConfigurationValue_show, bConfigurationValue_store);
91 90
92/* String fields */ 91/* String fields */
93#define usb_string_attr(name) \ 92#define usb_string_attr(name) \
94static ssize_t show_##name(struct device *dev, \ 93static ssize_t name##_show(struct device *dev, \
95 struct device_attribute *attr, char *buf) \ 94 struct device_attribute *attr, char *buf) \
96{ \ 95{ \
97 struct usb_device *udev; \ 96 struct usb_device *udev; \
@@ -103,14 +102,14 @@ static ssize_t show_##name(struct device *dev, \
103 usb_unlock_device(udev); \ 102 usb_unlock_device(udev); \
104 return retval; \ 103 return retval; \
105} \ 104} \
106static DEVICE_ATTR(name, S_IRUGO, show_##name, NULL); 105static DEVICE_ATTR_RO(name)
107 106
108usb_string_attr(product); 107usb_string_attr(product);
109usb_string_attr(manufacturer); 108usb_string_attr(manufacturer);
110usb_string_attr(serial); 109usb_string_attr(serial);
111 110
112static ssize_t 111static ssize_t speed_show(struct device *dev, struct device_attribute *attr,
113show_speed(struct device *dev, struct device_attribute *attr, char *buf) 112 char *buf)
114{ 113{
115 struct usb_device *udev; 114 struct usb_device *udev;
116 char *speed; 115 char *speed;
@@ -139,40 +138,40 @@ show_speed(struct device *dev, struct device_attribute *attr, char *buf)
139 } 138 }
140 return sprintf(buf, "%s\n", speed); 139 return sprintf(buf, "%s\n", speed);
141} 140}
142static DEVICE_ATTR(speed, S_IRUGO, show_speed, NULL); 141static DEVICE_ATTR_RO(speed);
143 142
144static ssize_t 143static ssize_t busnum_show(struct device *dev, struct device_attribute *attr,
145show_busnum(struct device *dev, struct device_attribute *attr, char *buf) 144 char *buf)
146{ 145{
147 struct usb_device *udev; 146 struct usb_device *udev;
148 147
149 udev = to_usb_device(dev); 148 udev = to_usb_device(dev);
150 return sprintf(buf, "%d\n", udev->bus->busnum); 149 return sprintf(buf, "%d\n", udev->bus->busnum);
151} 150}
152static DEVICE_ATTR(busnum, S_IRUGO, show_busnum, NULL); 151static DEVICE_ATTR_RO(busnum);
153 152
154static ssize_t 153static ssize_t devnum_show(struct device *dev, struct device_attribute *attr,
155show_devnum(struct device *dev, struct device_attribute *attr, char *buf) 154 char *buf)
156{ 155{
157 struct usb_device *udev; 156 struct usb_device *udev;
158 157
159 udev = to_usb_device(dev); 158 udev = to_usb_device(dev);
160 return sprintf(buf, "%d\n", udev->devnum); 159 return sprintf(buf, "%d\n", udev->devnum);
161} 160}
162static DEVICE_ATTR(devnum, S_IRUGO, show_devnum, NULL); 161static DEVICE_ATTR_RO(devnum);
163 162
164static ssize_t 163static ssize_t devpath_show(struct device *dev, struct device_attribute *attr,
165show_devpath(struct device *dev, struct device_attribute *attr, char *buf) 164 char *buf)
166{ 165{
167 struct usb_device *udev; 166 struct usb_device *udev;
168 167
169 udev = to_usb_device(dev); 168 udev = to_usb_device(dev);
170 return sprintf(buf, "%s\n", udev->devpath); 169 return sprintf(buf, "%s\n", udev->devpath);
171} 170}
172static DEVICE_ATTR(devpath, S_IRUGO, show_devpath, NULL); 171static DEVICE_ATTR_RO(devpath);
173 172
174static ssize_t 173static ssize_t version_show(struct device *dev, struct device_attribute *attr,
175show_version(struct device *dev, struct device_attribute *attr, char *buf) 174 char *buf)
176{ 175{
177 struct usb_device *udev; 176 struct usb_device *udev;
178 u16 bcdUSB; 177 u16 bcdUSB;
@@ -181,30 +180,30 @@ show_version(struct device *dev, struct device_attribute *attr, char *buf)
181 bcdUSB = le16_to_cpu(udev->descriptor.bcdUSB); 180 bcdUSB = le16_to_cpu(udev->descriptor.bcdUSB);
182 return sprintf(buf, "%2x.%02x\n", bcdUSB >> 8, bcdUSB & 0xff); 181 return sprintf(buf, "%2x.%02x\n", bcdUSB >> 8, bcdUSB & 0xff);
183} 182}
184static DEVICE_ATTR(version, S_IRUGO, show_version, NULL); 183static DEVICE_ATTR_RO(version);
185 184
186static ssize_t 185static ssize_t maxchild_show(struct device *dev, struct device_attribute *attr,
187show_maxchild(struct device *dev, struct device_attribute *attr, char *buf) 186 char *buf)
188{ 187{
189 struct usb_device *udev; 188 struct usb_device *udev;
190 189
191 udev = to_usb_device(dev); 190 udev = to_usb_device(dev);
192 return sprintf(buf, "%d\n", udev->maxchild); 191 return sprintf(buf, "%d\n", udev->maxchild);
193} 192}
194static DEVICE_ATTR(maxchild, S_IRUGO, show_maxchild, NULL); 193static DEVICE_ATTR_RO(maxchild);
195 194
196static ssize_t 195static ssize_t quirks_show(struct device *dev, struct device_attribute *attr,
197show_quirks(struct device *dev, struct device_attribute *attr, char *buf) 196 char *buf)
198{ 197{
199 struct usb_device *udev; 198 struct usb_device *udev;
200 199
201 udev = to_usb_device(dev); 200 udev = to_usb_device(dev);
202 return sprintf(buf, "0x%x\n", udev->quirks); 201 return sprintf(buf, "0x%x\n", udev->quirks);
203} 202}
204static DEVICE_ATTR(quirks, S_IRUGO, show_quirks, NULL); 203static DEVICE_ATTR_RO(quirks);
205 204
206static ssize_t 205static ssize_t avoid_reset_quirk_show(struct device *dev,
207show_avoid_reset_quirk(struct device *dev, struct device_attribute *attr, char *buf) 206 struct device_attribute *attr, char *buf)
208{ 207{
209 struct usb_device *udev; 208 struct usb_device *udev;
210 209
@@ -212,9 +211,9 @@ show_avoid_reset_quirk(struct device *dev, struct device_attribute *attr, char *
212 return sprintf(buf, "%d\n", !!(udev->quirks & USB_QUIRK_RESET)); 211 return sprintf(buf, "%d\n", !!(udev->quirks & USB_QUIRK_RESET));
213} 212}
214 213
215static ssize_t 214static ssize_t avoid_reset_quirk_store(struct device *dev,
216set_avoid_reset_quirk(struct device *dev, struct device_attribute *attr, 215 struct device_attribute *attr,
217 const char *buf, size_t count) 216 const char *buf, size_t count)
218{ 217{
219 struct usb_device *udev = to_usb_device(dev); 218 struct usb_device *udev = to_usb_device(dev);
220 int val; 219 int val;
@@ -229,22 +228,20 @@ set_avoid_reset_quirk(struct device *dev, struct device_attribute *attr,
229 usb_unlock_device(udev); 228 usb_unlock_device(udev);
230 return count; 229 return count;
231} 230}
231static DEVICE_ATTR_RW(avoid_reset_quirk);
232 232
233static DEVICE_ATTR(avoid_reset_quirk, S_IRUGO | S_IWUSR, 233static ssize_t urbnum_show(struct device *dev, struct device_attribute *attr,
234 show_avoid_reset_quirk, set_avoid_reset_quirk); 234 char *buf)
235
236static ssize_t
237show_urbnum(struct device *dev, struct device_attribute *attr, char *buf)
238{ 235{
239 struct usb_device *udev; 236 struct usb_device *udev;
240 237
241 udev = to_usb_device(dev); 238 udev = to_usb_device(dev);
242 return sprintf(buf, "%d\n", atomic_read(&udev->urbnum)); 239 return sprintf(buf, "%d\n", atomic_read(&udev->urbnum));
243} 240}
244static DEVICE_ATTR(urbnum, S_IRUGO, show_urbnum, NULL); 241static DEVICE_ATTR_RO(urbnum);
245 242
246static ssize_t 243static ssize_t removable_show(struct device *dev, struct device_attribute *attr,
247show_removable(struct device *dev, struct device_attribute *attr, char *buf) 244 char *buf)
248{ 245{
249 struct usb_device *udev; 246 struct usb_device *udev;
250 char *state; 247 char *state;
@@ -264,30 +261,29 @@ show_removable(struct device *dev, struct device_attribute *attr, char *buf)
264 261
265 return sprintf(buf, "%s\n", state); 262 return sprintf(buf, "%s\n", state);
266} 263}
267static DEVICE_ATTR(removable, S_IRUGO, show_removable, NULL); 264static DEVICE_ATTR_RO(removable);
268 265
269static ssize_t 266static ssize_t ltm_capable_show(struct device *dev,
270show_ltm_capable(struct device *dev, struct device_attribute *attr, char *buf) 267 struct device_attribute *attr, char *buf)
271{ 268{
272 if (usb_device_supports_ltm(to_usb_device(dev))) 269 if (usb_device_supports_ltm(to_usb_device(dev)))
273 return sprintf(buf, "%s\n", "yes"); 270 return sprintf(buf, "%s\n", "yes");
274 return sprintf(buf, "%s\n", "no"); 271 return sprintf(buf, "%s\n", "no");
275} 272}
276static DEVICE_ATTR(ltm_capable, S_IRUGO, show_ltm_capable, NULL); 273static DEVICE_ATTR_RO(ltm_capable);
277 274
278#ifdef CONFIG_PM 275#ifdef CONFIG_PM
279 276
280static ssize_t 277static ssize_t persist_show(struct device *dev, struct device_attribute *attr,
281show_persist(struct device *dev, struct device_attribute *attr, char *buf) 278 char *buf)
282{ 279{
283 struct usb_device *udev = to_usb_device(dev); 280 struct usb_device *udev = to_usb_device(dev);
284 281
285 return sprintf(buf, "%d\n", udev->persist_enabled); 282 return sprintf(buf, "%d\n", udev->persist_enabled);
286} 283}
287 284
288static ssize_t 285static ssize_t persist_store(struct device *dev, struct device_attribute *attr,
289set_persist(struct device *dev, struct device_attribute *attr, 286 const char *buf, size_t count)
290 const char *buf, size_t count)
291{ 287{
292 struct usb_device *udev = to_usb_device(dev); 288 struct usb_device *udev = to_usb_device(dev);
293 int value; 289 int value;
@@ -304,8 +300,7 @@ set_persist(struct device *dev, struct device_attribute *attr,
304 usb_unlock_device(udev); 300 usb_unlock_device(udev);
305 return count; 301 return count;
306} 302}
307 303static DEVICE_ATTR_RW(persist);
308static DEVICE_ATTR(persist, S_IRUGO | S_IWUSR, show_persist, set_persist);
309 304
310static int add_persist_attributes(struct device *dev) 305static int add_persist_attributes(struct device *dev)
311{ 306{
@@ -340,17 +335,15 @@ static void remove_persist_attributes(struct device *dev)
340 335
341#ifdef CONFIG_PM_RUNTIME 336#ifdef CONFIG_PM_RUNTIME
342 337
343static ssize_t 338static ssize_t connected_duration_show(struct device *dev,
344show_connected_duration(struct device *dev, struct device_attribute *attr, 339 struct device_attribute *attr, char *buf)
345 char *buf)
346{ 340{
347 struct usb_device *udev = to_usb_device(dev); 341 struct usb_device *udev = to_usb_device(dev);
348 342
349 return sprintf(buf, "%u\n", 343 return sprintf(buf, "%u\n",
350 jiffies_to_msecs(jiffies - udev->connect_time)); 344 jiffies_to_msecs(jiffies - udev->connect_time));
351} 345}
352 346static DEVICE_ATTR_RO(connected_duration);
353static DEVICE_ATTR(connected_duration, S_IRUGO, show_connected_duration, NULL);
354 347
355/* 348/*
356 * If the device is resumed, the last time the device was suspended has 349 * If the device is resumed, the last time the device was suspended has
@@ -359,9 +352,8 @@ static DEVICE_ATTR(connected_duration, S_IRUGO, show_connected_duration, NULL);
359 * 352 *
360 * If the device is suspended, the active_duration is up-to-date. 353 * If the device is suspended, the active_duration is up-to-date.
361 */ 354 */
362static ssize_t 355static ssize_t active_duration_show(struct device *dev,
363show_active_duration(struct device *dev, struct device_attribute *attr, 356 struct device_attribute *attr, char *buf)
364 char *buf)
365{ 357{
366 struct usb_device *udev = to_usb_device(dev); 358 struct usb_device *udev = to_usb_device(dev);
367 int duration; 359 int duration;
@@ -372,18 +364,17 @@ show_active_duration(struct device *dev, struct device_attribute *attr,
372 duration = jiffies_to_msecs(udev->active_duration); 364 duration = jiffies_to_msecs(udev->active_duration);
373 return sprintf(buf, "%u\n", duration); 365 return sprintf(buf, "%u\n", duration);
374} 366}
367static DEVICE_ATTR_RO(active_duration);
375 368
376static DEVICE_ATTR(active_duration, S_IRUGO, show_active_duration, NULL); 369static ssize_t autosuspend_show(struct device *dev,
377 370 struct device_attribute *attr, char *buf)
378static ssize_t
379show_autosuspend(struct device *dev, struct device_attribute *attr, char *buf)
380{ 371{
381 return sprintf(buf, "%d\n", dev->power.autosuspend_delay / 1000); 372 return sprintf(buf, "%d\n", dev->power.autosuspend_delay / 1000);
382} 373}
383 374
384static ssize_t 375static ssize_t autosuspend_store(struct device *dev,
385set_autosuspend(struct device *dev, struct device_attribute *attr, 376 struct device_attribute *attr, const char *buf,
386 const char *buf, size_t count) 377 size_t count)
387{ 378{
388 int value; 379 int value;
389 380
@@ -394,9 +385,7 @@ set_autosuspend(struct device *dev, struct device_attribute *attr,
394 pm_runtime_set_autosuspend_delay(dev, value * 1000); 385 pm_runtime_set_autosuspend_delay(dev, value * 1000);
395 return count; 386 return count;
396} 387}
397 388static DEVICE_ATTR_RW(autosuspend);
398static DEVICE_ATTR(autosuspend, S_IRUGO | S_IWUSR,
399 show_autosuspend, set_autosuspend);
400 389
401static const char on_string[] = "on"; 390static const char on_string[] = "on";
402static const char auto_string[] = "auto"; 391static const char auto_string[] = "auto";
@@ -411,8 +400,8 @@ static void warn_level(void) {
411 } 400 }
412} 401}
413 402
414static ssize_t 403static ssize_t level_show(struct device *dev, struct device_attribute *attr,
415show_level(struct device *dev, struct device_attribute *attr, char *buf) 404 char *buf)
416{ 405{
417 struct usb_device *udev = to_usb_device(dev); 406 struct usb_device *udev = to_usb_device(dev);
418 const char *p = auto_string; 407 const char *p = auto_string;
@@ -423,9 +412,8 @@ show_level(struct device *dev, struct device_attribute *attr, char *buf)
423 return sprintf(buf, "%s\n", p); 412 return sprintf(buf, "%s\n", p);
424} 413}
425 414
426static ssize_t 415static ssize_t level_store(struct device *dev, struct device_attribute *attr,
427set_level(struct device *dev, struct device_attribute *attr, 416 const char *buf, size_t count)
428 const char *buf, size_t count)
429{ 417{
430 struct usb_device *udev = to_usb_device(dev); 418 struct usb_device *udev = to_usb_device(dev);
431 int len = count; 419 int len = count;
@@ -453,12 +441,10 @@ set_level(struct device *dev, struct device_attribute *attr,
453 usb_unlock_device(udev); 441 usb_unlock_device(udev);
454 return rc; 442 return rc;
455} 443}
444static DEVICE_ATTR_RW(level);
456 445
457static DEVICE_ATTR(level, S_IRUGO | S_IWUSR, show_level, set_level); 446static ssize_t usb2_hardware_lpm_show(struct device *dev,
458 447 struct device_attribute *attr, char *buf)
459static ssize_t
460show_usb2_hardware_lpm(struct device *dev, struct device_attribute *attr,
461 char *buf)
462{ 448{
463 struct usb_device *udev = to_usb_device(dev); 449 struct usb_device *udev = to_usb_device(dev);
464 const char *p; 450 const char *p;
@@ -471,9 +457,9 @@ show_usb2_hardware_lpm(struct device *dev, struct device_attribute *attr,
471 return sprintf(buf, "%s\n", p); 457 return sprintf(buf, "%s\n", p);
472} 458}
473 459
474static ssize_t 460static ssize_t usb2_hardware_lpm_store(struct device *dev,
475set_usb2_hardware_lpm(struct device *dev, struct device_attribute *attr, 461 struct device_attribute *attr,
476 const char *buf, size_t count) 462 const char *buf, size_t count)
477{ 463{
478 struct usb_device *udev = to_usb_device(dev); 464 struct usb_device *udev = to_usb_device(dev);
479 bool value; 465 bool value;
@@ -493,21 +479,19 @@ set_usb2_hardware_lpm(struct device *dev, struct device_attribute *attr,
493 479
494 return ret; 480 return ret;
495} 481}
482static DEVICE_ATTR_RW(usb2_hardware_lpm);
496 483
497static DEVICE_ATTR(usb2_hardware_lpm, S_IRUGO | S_IWUSR, show_usb2_hardware_lpm, 484static ssize_t usb2_lpm_l1_timeout_show(struct device *dev,
498 set_usb2_hardware_lpm); 485 struct device_attribute *attr,
499 486 char *buf)
500static ssize_t
501show_usb2_lpm_l1_timeout(struct device *dev, struct device_attribute *attr,
502 char *buf)
503{ 487{
504 struct usb_device *udev = to_usb_device(dev); 488 struct usb_device *udev = to_usb_device(dev);
505 return sprintf(buf, "%d\n", udev->l1_params.timeout); 489 return sprintf(buf, "%d\n", udev->l1_params.timeout);
506} 490}
507 491
508static ssize_t 492static ssize_t usb2_lpm_l1_timeout_store(struct device *dev,
509set_usb2_lpm_l1_timeout(struct device *dev, struct device_attribute *attr, 493 struct device_attribute *attr,
510 const char *buf, size_t count) 494 const char *buf, size_t count)
511{ 495{
512 struct usb_device *udev = to_usb_device(dev); 496 struct usb_device *udev = to_usb_device(dev);
513 u16 timeout; 497 u16 timeout;
@@ -519,21 +503,18 @@ set_usb2_lpm_l1_timeout(struct device *dev, struct device_attribute *attr,
519 503
520 return count; 504 return count;
521} 505}
506static DEVICE_ATTR_RW(usb2_lpm_l1_timeout);
522 507
523static DEVICE_ATTR(usb2_lpm_l1_timeout, S_IRUGO | S_IWUSR, 508static ssize_t usb2_lpm_besl_show(struct device *dev,
524 show_usb2_lpm_l1_timeout, set_usb2_lpm_l1_timeout); 509 struct device_attribute *attr, char *buf)
525
526static ssize_t
527show_usb2_lpm_besl(struct device *dev, struct device_attribute *attr,
528 char *buf)
529{ 510{
530 struct usb_device *udev = to_usb_device(dev); 511 struct usb_device *udev = to_usb_device(dev);
531 return sprintf(buf, "%d\n", udev->l1_params.besl); 512 return sprintf(buf, "%d\n", udev->l1_params.besl);
532} 513}
533 514
534static ssize_t 515static ssize_t usb2_lpm_besl_store(struct device *dev,
535set_usb2_lpm_besl(struct device *dev, struct device_attribute *attr, 516 struct device_attribute *attr,
536 const char *buf, size_t count) 517 const char *buf, size_t count)
537{ 518{
538 struct usb_device *udev = to_usb_device(dev); 519 struct usb_device *udev = to_usb_device(dev);
539 u8 besl; 520 u8 besl;
@@ -545,9 +526,7 @@ set_usb2_lpm_besl(struct device *dev, struct device_attribute *attr,
545 526
546 return count; 527 return count;
547} 528}
548 529static DEVICE_ATTR_RW(usb2_lpm_besl);
549static DEVICE_ATTR(usb2_lpm_besl, S_IRUGO | S_IWUSR,
550 show_usb2_lpm_besl, set_usb2_lpm_besl);
551 530
552static struct attribute *usb2_hardware_lpm_attr[] = { 531static struct attribute *usb2_hardware_lpm_attr[] = {
553 &dev_attr_usb2_hardware_lpm.attr, 532 &dev_attr_usb2_hardware_lpm.attr,
@@ -604,7 +583,7 @@ static void remove_power_attributes(struct device *dev)
604/* Descriptor fields */ 583/* Descriptor fields */
605#define usb_descriptor_attr_le16(field, format_string) \ 584#define usb_descriptor_attr_le16(field, format_string) \
606static ssize_t \ 585static ssize_t \
607show_##field(struct device *dev, struct device_attribute *attr, \ 586field##_show(struct device *dev, struct device_attribute *attr, \
608 char *buf) \ 587 char *buf) \
609{ \ 588{ \
610 struct usb_device *udev; \ 589 struct usb_device *udev; \
@@ -613,15 +592,15 @@ show_##field(struct device *dev, struct device_attribute *attr, \
613 return sprintf(buf, format_string, \ 592 return sprintf(buf, format_string, \
614 le16_to_cpu(udev->descriptor.field)); \ 593 le16_to_cpu(udev->descriptor.field)); \
615} \ 594} \
616static DEVICE_ATTR(field, S_IRUGO, show_##field, NULL); 595static DEVICE_ATTR_RO(field)
617 596
618usb_descriptor_attr_le16(idVendor, "%04x\n") 597usb_descriptor_attr_le16(idVendor, "%04x\n");
619usb_descriptor_attr_le16(idProduct, "%04x\n") 598usb_descriptor_attr_le16(idProduct, "%04x\n");
620usb_descriptor_attr_le16(bcdDevice, "%04x\n") 599usb_descriptor_attr_le16(bcdDevice, "%04x\n");
621 600
622#define usb_descriptor_attr(field, format_string) \ 601#define usb_descriptor_attr(field, format_string) \
623static ssize_t \ 602static ssize_t \
624show_##field(struct device *dev, struct device_attribute *attr, \ 603field##_show(struct device *dev, struct device_attribute *attr, \
625 char *buf) \ 604 char *buf) \
626{ \ 605{ \
627 struct usb_device *udev; \ 606 struct usb_device *udev; \
@@ -629,34 +608,31 @@ show_##field(struct device *dev, struct device_attribute *attr, \
629 udev = to_usb_device(dev); \ 608 udev = to_usb_device(dev); \
630 return sprintf(buf, format_string, udev->descriptor.field); \ 609 return sprintf(buf, format_string, udev->descriptor.field); \
631} \ 610} \
632static DEVICE_ATTR(field, S_IRUGO, show_##field, NULL); 611static DEVICE_ATTR_RO(field)
633
634usb_descriptor_attr(bDeviceClass, "%02x\n")
635usb_descriptor_attr(bDeviceSubClass, "%02x\n")
636usb_descriptor_attr(bDeviceProtocol, "%02x\n")
637usb_descriptor_attr(bNumConfigurations, "%d\n")
638usb_descriptor_attr(bMaxPacketSize0, "%d\n")
639 612
613usb_descriptor_attr(bDeviceClass, "%02x\n");
614usb_descriptor_attr(bDeviceSubClass, "%02x\n");
615usb_descriptor_attr(bDeviceProtocol, "%02x\n");
616usb_descriptor_attr(bNumConfigurations, "%d\n");
617usb_descriptor_attr(bMaxPacketSize0, "%d\n");
640 618
641 619
642/* show if the device is authorized (1) or not (0) */ 620/* show if the device is authorized (1) or not (0) */
643static ssize_t usb_dev_authorized_show(struct device *dev, 621static ssize_t authorized_show(struct device *dev,
644 struct device_attribute *attr, 622 struct device_attribute *attr, char *buf)
645 char *buf)
646{ 623{
647 struct usb_device *usb_dev = to_usb_device(dev); 624 struct usb_device *usb_dev = to_usb_device(dev);
648 return snprintf(buf, PAGE_SIZE, "%u\n", usb_dev->authorized); 625 return snprintf(buf, PAGE_SIZE, "%u\n", usb_dev->authorized);
649} 626}
650 627
651
652/* 628/*
653 * Authorize a device to be used in the system 629 * Authorize a device to be used in the system
654 * 630 *
655 * Writing a 0 deauthorizes the device, writing a 1 authorizes it. 631 * Writing a 0 deauthorizes the device, writing a 1 authorizes it.
656 */ 632 */
657static ssize_t usb_dev_authorized_store(struct device *dev, 633static ssize_t authorized_store(struct device *dev,
658 struct device_attribute *attr, 634 struct device_attribute *attr, const char *buf,
659 const char *buf, size_t size) 635 size_t size)
660{ 636{
661 ssize_t result; 637 ssize_t result;
662 struct usb_device *usb_dev = to_usb_device(dev); 638 struct usb_device *usb_dev = to_usb_device(dev);
@@ -670,14 +646,12 @@ static ssize_t usb_dev_authorized_store(struct device *dev,
670 result = usb_authorize_device(usb_dev); 646 result = usb_authorize_device(usb_dev);
671 return result < 0? result : size; 647 return result < 0? result : size;
672} 648}
673 649static DEVICE_ATTR_IGNORE_LOCKDEP(authorized, S_IRUGO | S_IWUSR,
674static DEVICE_ATTR_IGNORE_LOCKDEP(authorized, 0644, 650 authorized_show, authorized_store);
675 usb_dev_authorized_show, usb_dev_authorized_store);
676 651
677/* "Safely remove a device" */ 652/* "Safely remove a device" */
678static ssize_t usb_remove_store(struct device *dev, 653static ssize_t remove_store(struct device *dev, struct device_attribute *attr,
679 struct device_attribute *attr, 654 const char *buf, size_t count)
680 const char *buf, size_t count)
681{ 655{
682 struct usb_device *udev = to_usb_device(dev); 656 struct usb_device *udev = to_usb_device(dev);
683 int rc = 0; 657 int rc = 0;
@@ -694,7 +668,7 @@ static ssize_t usb_remove_store(struct device *dev,
694 usb_unlock_device(udev); 668 usb_unlock_device(udev);
695 return rc; 669 return rc;
696} 670}
697static DEVICE_ATTR_IGNORE_LOCKDEP(remove, 0200, NULL, usb_remove_store); 671static DEVICE_ATTR_IGNORE_LOCKDEP(remove, S_IWUSR, NULL, remove_store);
698 672
699 673
700static struct attribute *dev_attrs[] = { 674static struct attribute *dev_attrs[] = {
@@ -853,7 +827,7 @@ void usb_remove_sysfs_dev_files(struct usb_device *udev)
853/* Interface Accociation Descriptor fields */ 827/* Interface Accociation Descriptor fields */
854#define usb_intf_assoc_attr(field, format_string) \ 828#define usb_intf_assoc_attr(field, format_string) \
855static ssize_t \ 829static ssize_t \
856show_iad_##field(struct device *dev, struct device_attribute *attr, \ 830iad_##field##_show(struct device *dev, struct device_attribute *attr, \
857 char *buf) \ 831 char *buf) \
858{ \ 832{ \
859 struct usb_interface *intf = to_usb_interface(dev); \ 833 struct usb_interface *intf = to_usb_interface(dev); \
@@ -861,18 +835,18 @@ show_iad_##field(struct device *dev, struct device_attribute *attr, \
861 return sprintf(buf, format_string, \ 835 return sprintf(buf, format_string, \
862 intf->intf_assoc->field); \ 836 intf->intf_assoc->field); \
863} \ 837} \
864static DEVICE_ATTR(iad_##field, S_IRUGO, show_iad_##field, NULL); 838static DEVICE_ATTR_RO(iad_##field)
865 839
866usb_intf_assoc_attr(bFirstInterface, "%02x\n") 840usb_intf_assoc_attr(bFirstInterface, "%02x\n");
867usb_intf_assoc_attr(bInterfaceCount, "%02d\n") 841usb_intf_assoc_attr(bInterfaceCount, "%02d\n");
868usb_intf_assoc_attr(bFunctionClass, "%02x\n") 842usb_intf_assoc_attr(bFunctionClass, "%02x\n");
869usb_intf_assoc_attr(bFunctionSubClass, "%02x\n") 843usb_intf_assoc_attr(bFunctionSubClass, "%02x\n");
870usb_intf_assoc_attr(bFunctionProtocol, "%02x\n") 844usb_intf_assoc_attr(bFunctionProtocol, "%02x\n");
871 845
872/* Interface fields */ 846/* Interface fields */
873#define usb_intf_attr(field, format_string) \ 847#define usb_intf_attr(field, format_string) \
874static ssize_t \ 848static ssize_t \
875show_##field(struct device *dev, struct device_attribute *attr, \ 849field##_show(struct device *dev, struct device_attribute *attr, \
876 char *buf) \ 850 char *buf) \
877{ \ 851{ \
878 struct usb_interface *intf = to_usb_interface(dev); \ 852 struct usb_interface *intf = to_usb_interface(dev); \
@@ -880,17 +854,17 @@ show_##field(struct device *dev, struct device_attribute *attr, \
880 return sprintf(buf, format_string, \ 854 return sprintf(buf, format_string, \
881 intf->cur_altsetting->desc.field); \ 855 intf->cur_altsetting->desc.field); \
882} \ 856} \
883static DEVICE_ATTR(field, S_IRUGO, show_##field, NULL); 857static DEVICE_ATTR_RO(field)
884 858
885usb_intf_attr(bInterfaceNumber, "%02x\n") 859usb_intf_attr(bInterfaceNumber, "%02x\n");
886usb_intf_attr(bAlternateSetting, "%2d\n") 860usb_intf_attr(bAlternateSetting, "%2d\n");
887usb_intf_attr(bNumEndpoints, "%02x\n") 861usb_intf_attr(bNumEndpoints, "%02x\n");
888usb_intf_attr(bInterfaceClass, "%02x\n") 862usb_intf_attr(bInterfaceClass, "%02x\n");
889usb_intf_attr(bInterfaceSubClass, "%02x\n") 863usb_intf_attr(bInterfaceSubClass, "%02x\n");
890usb_intf_attr(bInterfaceProtocol, "%02x\n") 864usb_intf_attr(bInterfaceProtocol, "%02x\n");
891 865
892static ssize_t show_interface_string(struct device *dev, 866static ssize_t interface_show(struct device *dev, struct device_attribute *attr,
893 struct device_attribute *attr, char *buf) 867 char *buf)
894{ 868{
895 struct usb_interface *intf; 869 struct usb_interface *intf;
896 char *string; 870 char *string;
@@ -903,10 +877,10 @@ static ssize_t show_interface_string(struct device *dev,
903 return 0; 877 return 0;
904 return sprintf(buf, "%s\n", string); 878 return sprintf(buf, "%s\n", string);
905} 879}
906static DEVICE_ATTR(interface, S_IRUGO, show_interface_string, NULL); 880static DEVICE_ATTR_RO(interface);
907 881
908static ssize_t show_modalias(struct device *dev, 882static ssize_t modalias_show(struct device *dev, struct device_attribute *attr,
909 struct device_attribute *attr, char *buf) 883 char *buf)
910{ 884{
911 struct usb_interface *intf; 885 struct usb_interface *intf;
912 struct usb_device *udev; 886 struct usb_device *udev;
@@ -929,10 +903,11 @@ static ssize_t show_modalias(struct device *dev,
929 alt->desc.bInterfaceProtocol, 903 alt->desc.bInterfaceProtocol,
930 alt->desc.bInterfaceNumber); 904 alt->desc.bInterfaceNumber);
931} 905}
932static DEVICE_ATTR(modalias, S_IRUGO, show_modalias, NULL); 906static DEVICE_ATTR_RO(modalias);
933 907
934static ssize_t show_supports_autosuspend(struct device *dev, 908static ssize_t supports_autosuspend_show(struct device *dev,
935 struct device_attribute *attr, char *buf) 909 struct device_attribute *attr,
910 char *buf)
936{ 911{
937 struct usb_interface *intf; 912 struct usb_interface *intf;
938 struct usb_device *udev; 913 struct usb_device *udev;
@@ -952,7 +927,7 @@ static ssize_t show_supports_autosuspend(struct device *dev,
952 927
953 return ret; 928 return ret;
954} 929}
955static DEVICE_ATTR(supports_autosuspend, S_IRUGO, show_supports_autosuspend, NULL); 930static DEVICE_ATTR_RO(supports_autosuspend);
956 931
957static struct attribute *intf_attrs[] = { 932static struct attribute *intf_attrs[] = {
958 &dev_attr_bInterfaceNumber.attr, 933 &dev_attr_bInterfaceNumber.attr,