@@ -31,11 +31,14 @@ static ssize_t brightness_show(struct device *dev,
31
31
struct device_attribute * attr , char * buf )
32
32
{
33
33
struct led_classdev * led_cdev = dev_get_drvdata (dev );
34
+ unsigned int brightness ;
34
35
35
- /* no lock needed for this */
36
+ mutex_lock ( & led_cdev -> led_access );
36
37
led_update_brightness (led_cdev );
38
+ brightness = led_cdev -> brightness ;
39
+ mutex_unlock (& led_cdev -> led_access );
37
40
38
- return sprintf (buf , "%u\n" , led_cdev -> brightness );
41
+ return sprintf (buf , "%u\n" , brightness );
39
42
}
40
43
41
44
static ssize_t brightness_store (struct device * dev ,
@@ -71,8 +74,13 @@ static ssize_t max_brightness_show(struct device *dev,
71
74
struct device_attribute * attr , char * buf )
72
75
{
73
76
struct led_classdev * led_cdev = dev_get_drvdata (dev );
77
+ unsigned int max_brightness ;
78
+
79
+ mutex_lock (& led_cdev -> led_access );
80
+ max_brightness = led_cdev -> max_brightness ;
81
+ mutex_unlock (& led_cdev -> led_access );
74
82
75
- return sprintf (buf , "%u\n" , led_cdev -> max_brightness );
83
+ return sprintf (buf , "%u\n" , max_brightness );
76
84
}
77
85
static DEVICE_ATTR_RO (max_brightness );
78
86
0 commit comments