drivers/staging/speakup/: avoid world-writable sysfs files.
authorRusty Russell <rusty@rustcorp.com.au>
Thu, 24 Apr 2014 04:27:49 +0000 (13:57 +0930)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 23 May 2014 11:31:22 +0000 (20:31 +0900)
In line with practice for module parameters, we're adding a build-time
check that sysfs files aren't world-writable.

Cc: Christopher Brannon <chris@the-brannons.com>
Cc: Samuel Thibault <samuel.thibault@ens-lyon.org>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
16 files changed:
drivers/staging/speakup/kobjects.c
drivers/staging/speakup/speakup_acntpc.c
drivers/staging/speakup/speakup_acntsa.c
drivers/staging/speakup/speakup_apollo.c
drivers/staging/speakup/speakup_audptr.c
drivers/staging/speakup/speakup_bns.c
drivers/staging/speakup/speakup_decext.c
drivers/staging/speakup/speakup_decpc.c
drivers/staging/speakup/speakup_dectlk.c
drivers/staging/speakup/speakup_dtlk.c
drivers/staging/speakup/speakup_dummy.c
drivers/staging/speakup/speakup_keypc.c
drivers/staging/speakup/speakup_ltlk.c
drivers/staging/speakup/speakup_soft.c
drivers/staging/speakup/speakup_spkout.c
drivers/staging/speakup/speakup_txprt.c

index 7495b890b6f0a50bb8b2b2253dd4dd41d75ca22c..2ef7f6f201a8e27e0212f4c0ff4b94954fc6c18d 100644 (file)
@@ -851,75 +851,75 @@ static ssize_t message_store(struct kobject *kobj, struct kobj_attribute *attr,
  * Declare the attributes.
  */
 static struct kobj_attribute keymap_attribute =
-       __ATTR(keymap, S_IWUSR|S_IRUGO, keymap_show, keymap_store);
+       __ATTR_RW(keymap);
 static struct kobj_attribute silent_attribute =
-       __ATTR(silent, S_IWUGO, NULL, silent_store);
+       __ATTR_WO(silent);
 static struct kobj_attribute synth_attribute =
-       __ATTR(synth, S_IWUGO|S_IRUGO, synth_show, synth_store);
+       __ATTR_RW(synth);
 static struct kobj_attribute synth_direct_attribute =
-       __ATTR(synth_direct, S_IWUGO, NULL, synth_direct_store);
+       __ATTR_WO(synth_direct);
 static struct kobj_attribute version_attribute =
        __ATTR_RO(version);
 
 static struct kobj_attribute delimiters_attribute =
-       __ATTR(delimiters, S_IWUGO|S_IRUGO, punc_show, punc_store);
+       __ATTR(delimiters, S_IWUSR|S_IRUGO, punc_show, punc_store);
 static struct kobj_attribute ex_num_attribute =
-       __ATTR(ex_num, S_IWUGO|S_IRUGO, punc_show, punc_store);
+       __ATTR(ex_num, S_IWUSR|S_IRUGO, punc_show, punc_store);
 static struct kobj_attribute punc_all_attribute =
-       __ATTR(punc_all, S_IWUGO|S_IRUGO, punc_show, punc_store);
+       __ATTR(punc_all, S_IWUSR|S_IRUGO, punc_show, punc_store);
 static struct kobj_attribute punc_most_attribute =
-       __ATTR(punc_most, S_IWUGO|S_IRUGO, punc_show, punc_store);
+       __ATTR(punc_most, S_IWUSR|S_IRUGO, punc_show, punc_store);
 static struct kobj_attribute punc_some_attribute =
-       __ATTR(punc_some, S_IWUGO|S_IRUGO, punc_show, punc_store);
+       __ATTR(punc_some, S_IWUSR|S_IRUGO, punc_show, punc_store);
 static struct kobj_attribute repeats_attribute =
-       __ATTR(repeats, S_IWUGO|S_IRUGO, punc_show, punc_store);
+       __ATTR(repeats, S_IWUSR|S_IRUGO, punc_show, punc_store);
 
 static struct kobj_attribute attrib_bleep_attribute =
-       __ATTR(attrib_bleep, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(attrib_bleep, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute bell_pos_attribute =
-       __ATTR(bell_pos, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(bell_pos, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute bleep_time_attribute =
-       __ATTR(bleep_time, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(bleep_time, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute bleeps_attribute =
-       __ATTR(bleeps, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(bleeps, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute cursor_time_attribute =
-       __ATTR(cursor_time, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(cursor_time, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute key_echo_attribute =
-       __ATTR(key_echo, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(key_echo, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute no_interrupt_attribute =
-       __ATTR(no_interrupt, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(no_interrupt, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute punc_level_attribute =
-       __ATTR(punc_level, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(punc_level, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute reading_punc_attribute =
-       __ATTR(reading_punc, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(reading_punc, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute say_control_attribute =
-       __ATTR(say_control, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(say_control, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute say_word_ctl_attribute =
-       __ATTR(say_word_ctl, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(say_word_ctl, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute spell_delay_attribute =
-       __ATTR(spell_delay, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(spell_delay, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 
 /*
  * These attributes are i18n related.
  */
 static struct kobj_attribute announcements_attribute =
-       __ATTR(announcements, S_IWUGO|S_IRUGO, message_show, message_store);
+       __ATTR(announcements, S_IWUSR|S_IRUGO, message_show, message_store);
 static struct kobj_attribute characters_attribute =
-       __ATTR(characters, S_IWUGO|S_IRUGO, chars_chartab_show, chars_chartab_store);
+       __ATTR(characters, S_IWUSR|S_IRUGO, chars_chartab_show, chars_chartab_store);
 static struct kobj_attribute chartab_attribute =
-       __ATTR(chartab, S_IWUGO|S_IRUGO, chars_chartab_show, chars_chartab_store);
+       __ATTR(chartab, S_IWUSR|S_IRUGO, chars_chartab_show, chars_chartab_store);
 static struct kobj_attribute ctl_keys_attribute =
-       __ATTR(ctl_keys, S_IWUGO|S_IRUGO, message_show, message_store);
+       __ATTR(ctl_keys, S_IWUSR|S_IRUGO, message_show, message_store);
 static struct kobj_attribute colors_attribute =
-       __ATTR(colors, S_IWUGO|S_IRUGO, message_show, message_store);
+       __ATTR(colors, S_IWUSR|S_IRUGO, message_show, message_store);
 static struct kobj_attribute formatted_attribute =
-       __ATTR(formatted, S_IWUGO|S_IRUGO, message_show, message_store);
+       __ATTR(formatted, S_IWUSR|S_IRUGO, message_show, message_store);
 static struct kobj_attribute function_names_attribute =
-       __ATTR(function_names, S_IWUGO|S_IRUGO, message_show, message_store);
+       __ATTR(function_names, S_IWUSR|S_IRUGO, message_show, message_store);
 static struct kobj_attribute key_names_attribute =
-       __ATTR(key_names, S_IWUGO|S_IRUGO, message_show, message_store);
+       __ATTR(key_names, S_IWUSR|S_IRUGO, message_show, message_store);
 static struct kobj_attribute states_attribute =
-       __ATTR(states, S_IWUGO|S_IRUGO, message_show, message_store);
+       __ATTR(states, S_IWUSR|S_IRUGO, message_show, message_store);
 
 /*
  * Create groups of attributes so that we can create and destroy them all
index e7dfa434bd9607e2ef9dd6087e2244dd7f8a682d..31f952b9049bc4c2471c53b4de392907cc0bd5e7 100644 (file)
@@ -62,22 +62,22 @@ static struct var_t vars[] = {
  * These attributes will appear in /sys/accessibility/speakup/acntpc.
  */
 static struct kobj_attribute caps_start_attribute =
-       __ATTR(caps_start, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(caps_start, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute caps_stop_attribute =
-       __ATTR(caps_stop, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(caps_stop, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute pitch_attribute =
-       __ATTR(pitch, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(pitch, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute rate_attribute =
-       __ATTR(rate, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(rate, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute tone_attribute =
-       __ATTR(tone, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(tone, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute vol_attribute =
-       __ATTR(vol, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(vol, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 
 static struct kobj_attribute delay_time_attribute =
        __ATTR(delay_time, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute direct_attribute =
-       __ATTR(direct, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(direct, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute full_time_attribute =
        __ATTR(full_time, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute jiffy_delta_attribute =
index c7f014ed96280c6c28b58f30a529d910d3317ea1..1f374845f610e90aed72ab0185f451cb7b4ec90e 100644 (file)
@@ -47,22 +47,22 @@ static struct var_t vars[] = {
  * These attributes will appear in /sys/accessibility/speakup/acntsa.
  */
 static struct kobj_attribute caps_start_attribute =
-       __ATTR(caps_start, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(caps_start, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute caps_stop_attribute =
-       __ATTR(caps_stop, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(caps_stop, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute pitch_attribute =
-       __ATTR(pitch, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(pitch, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute rate_attribute =
-       __ATTR(rate, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(rate, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute tone_attribute =
-       __ATTR(tone, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(tone, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute vol_attribute =
-       __ATTR(vol, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(vol, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 
 static struct kobj_attribute delay_time_attribute =
        __ATTR(delay_time, S_IRUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute direct_attribute =
-       __ATTR(direct, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(direct, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute full_time_attribute =
        __ATTR(full_time, S_IRUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute jiffy_delta_attribute =
index 38c8c2221e4e1c47022d14d6437cf14d3c8e054e..678b263e551c4cee34e8ef73e87af7c92d6c8f03 100644 (file)
@@ -53,24 +53,24 @@ static struct var_t vars[] = {
  * These attributes will appear in /sys/accessibility/speakup/apollo.
  */
 static struct kobj_attribute caps_start_attribute =
-       __ATTR(caps_start, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(caps_start, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute caps_stop_attribute =
-       __ATTR(caps_stop, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(caps_stop, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute lang_attribute =
-       __ATTR(lang, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(lang, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute pitch_attribute =
-       __ATTR(pitch, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(pitch, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute rate_attribute =
-       __ATTR(rate, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(rate, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute voice_attribute =
-       __ATTR(voice, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(voice, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute vol_attribute =
-       __ATTR(vol, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(vol, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 
 static struct kobj_attribute delay_time_attribute =
        __ATTR(delay_time, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute direct_attribute =
-       __ATTR(direct, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(direct, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute full_time_attribute =
        __ATTR(full_time, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute jiffy_delta_attribute =
index de5b4a5f43b62f9f732a5d192a446affc039db0d..362f9747e48d8a1fff85d2a29cac3c2a8f62f538 100644 (file)
@@ -49,24 +49,24 @@ static struct var_t vars[] = {
  * These attributes will appear in /sys/accessibility/speakup/audptr.
  */
 static struct kobj_attribute caps_start_attribute =
-       __ATTR(caps_start, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(caps_start, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute caps_stop_attribute =
-       __ATTR(caps_stop, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(caps_stop, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute pitch_attribute =
-       __ATTR(pitch, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(pitch, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute punct_attribute =
-       __ATTR(punct, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(punct, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute rate_attribute =
-       __ATTR(rate, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(rate, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute tone_attribute =
-       __ATTR(tone, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(tone, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute vol_attribute =
-       __ATTR(vol, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(vol, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 
 static struct kobj_attribute delay_time_attribute =
        __ATTR(delay_time, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute direct_attribute =
-       __ATTR(direct, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(direct, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute full_time_attribute =
        __ATTR(full_time, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute jiffy_delta_attribute =
index 4939e8c7272ec64a012803769df48f9a1a093f62..2f070282a85de6f87f4f4b7000745d06bb92610f 100644 (file)
@@ -44,22 +44,22 @@ static struct var_t vars[] = {
  * These attributes will appear in /sys/accessibility/speakup/bns.
  */
 static struct kobj_attribute caps_start_attribute =
-       __ATTR(caps_start, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(caps_start, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute caps_stop_attribute =
-       __ATTR(caps_stop, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(caps_stop, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute pitch_attribute =
-       __ATTR(pitch, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(pitch, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute rate_attribute =
-       __ATTR(rate, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(rate, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute tone_attribute =
-       __ATTR(tone, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(tone, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute vol_attribute =
-       __ATTR(vol, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(vol, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 
 static struct kobj_attribute delay_time_attribute =
        __ATTR(delay_time, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute direct_attribute =
-       __ATTR(direct, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(direct, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute full_time_attribute =
        __ATTR(full_time, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute jiffy_delta_attribute =
index b17af980392984b16b1fda94f31fbe4aebb09492..67b7de1d8c755f32bd2c40f3243b94fc4bb6a122 100644 (file)
@@ -70,24 +70,24 @@ static struct var_t vars[] = {
  * These attributes will appear in /sys/accessibility/speakup/decext.
  */
 static struct kobj_attribute caps_start_attribute =
-       __ATTR(caps_start, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(caps_start, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute caps_stop_attribute =
-       __ATTR(caps_stop, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(caps_stop, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute pitch_attribute =
-       __ATTR(pitch, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(pitch, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute punct_attribute =
-       __ATTR(punct, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(punct, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute rate_attribute =
-       __ATTR(rate, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(rate, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute voice_attribute =
-       __ATTR(voice, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(voice, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute vol_attribute =
-       __ATTR(vol, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(vol, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 
 static struct kobj_attribute delay_time_attribute =
        __ATTR(delay_time, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute direct_attribute =
-       __ATTR(direct, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(direct, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute full_time_attribute =
        __ATTR(full_time, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute jiffy_delta_attribute =
index cfa4bc0323580a3117a0b572b1862937e2b256f1..67678d8888c29b6eb6a256df39cb9efa68d70843 100644 (file)
@@ -164,24 +164,24 @@ static struct var_t vars[] = {
  * These attributes will appear in /sys/accessibility/speakup/decpc.
  */
 static struct kobj_attribute caps_start_attribute =
-       __ATTR(caps_start, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(caps_start, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute caps_stop_attribute =
-       __ATTR(caps_stop, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(caps_stop, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute pitch_attribute =
-       __ATTR(pitch, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(pitch, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute punct_attribute =
-       __ATTR(punct, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(punct, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute rate_attribute =
-       __ATTR(rate, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(rate, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute voice_attribute =
-       __ATTR(voice, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(voice, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute vol_attribute =
-       __ATTR(vol, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(vol, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 
 static struct kobj_attribute delay_time_attribute =
        __ATTR(delay_time, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute direct_attribute =
-       __ATTR(direct, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(direct, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute full_time_attribute =
        __ATTR(full_time, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute jiffy_delta_attribute =
index 1fcae55dabba1fa46e0721480538821e40030e37..af848686be718a0ae0ba0ae0d2bed457e9bca980 100644 (file)
@@ -70,24 +70,24 @@ static struct var_t vars[] = {
  * These attributes will appear in /sys/accessibility/speakup/dectlk.
  */
 static struct kobj_attribute caps_start_attribute =
-       __ATTR(caps_start, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(caps_start, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute caps_stop_attribute =
-       __ATTR(caps_stop, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(caps_stop, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute pitch_attribute =
-       __ATTR(pitch, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(pitch, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute punct_attribute =
-       __ATTR(punct, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(punct, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute rate_attribute =
-       __ATTR(rate, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(rate, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute voice_attribute =
-       __ATTR(voice, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(voice, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute vol_attribute =
-       __ATTR(vol, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(vol, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 
 static struct kobj_attribute delay_time_attribute =
        __ATTR(delay_time, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute direct_attribute =
-       __ATTR(direct, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(direct, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute full_time_attribute =
        __ATTR(full_time, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute jiffy_delta_attribute =
index 5c6c34191e8dc007494b9a6106b2fd93be8c7a13..98d1f497e4e09d030476413a102f53a0a41986fa 100644 (file)
@@ -67,28 +67,28 @@ static struct var_t vars[] = {
  * These attributes will appear in /sys/accessibility/speakup/dtlk.
  */
 static struct kobj_attribute caps_start_attribute =
-       __ATTR(caps_start, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(caps_start, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute caps_stop_attribute =
-       __ATTR(caps_stop, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(caps_stop, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute freq_attribute =
-       __ATTR(freq, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(freq, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute pitch_attribute =
-       __ATTR(pitch, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(pitch, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute punct_attribute =
-       __ATTR(punct, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(punct, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute rate_attribute =
-       __ATTR(rate, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(rate, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute tone_attribute =
-       __ATTR(tone, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(tone, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute voice_attribute =
-       __ATTR(voice, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(voice, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute vol_attribute =
-       __ATTR(vol, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(vol, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 
 static struct kobj_attribute delay_time_attribute =
        __ATTR(delay_time, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute direct_attribute =
-       __ATTR(direct, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(direct, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute full_time_attribute =
        __ATTR(full_time, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute jiffy_delta_attribute =
index e19e9994bbb557c194dc4ddd2a8508732dc7a734..362342a194afb2975b8fcd2328282c11d48781ed 100644 (file)
@@ -46,22 +46,22 @@ static struct var_t vars[] = {
  * These attributes will appear in /sys/accessibility/speakup/dummy.
  */
 static struct kobj_attribute caps_start_attribute =
-       __ATTR(caps_start, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(caps_start, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute caps_stop_attribute =
-       __ATTR(caps_stop, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(caps_stop, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute pitch_attribute =
-       __ATTR(pitch, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(pitch, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute rate_attribute =
-       __ATTR(rate, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(rate, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute tone_attribute =
-       __ATTR(tone, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(tone, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute vol_attribute =
-       __ATTR(vol, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(vol, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 
 static struct kobj_attribute delay_time_attribute =
        __ATTR(delay_time, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute direct_attribute =
-       __ATTR(direct, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(direct, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute full_time_attribute =
        __ATTR(full_time, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute jiffy_delta_attribute =
index 9c246d701a956f5b3c6a5a166199ba01b4df7e37..9d30c1945f92801fc0380af0b7dd391c54a5d8c4 100644 (file)
@@ -59,18 +59,18 @@ static struct var_t vars[] = {
  * These attributes will appear in /sys/accessibility/speakup/keypc.
  */
 static struct kobj_attribute caps_start_attribute =
-       __ATTR(caps_start, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(caps_start, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute caps_stop_attribute =
-       __ATTR(caps_stop, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(caps_stop, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute pitch_attribute =
-       __ATTR(pitch, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(pitch, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute rate_attribute =
-       __ATTR(rate, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(rate, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 
 static struct kobj_attribute delay_time_attribute =
        __ATTR(delay_time, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute direct_attribute =
-       __ATTR(direct, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(direct, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute full_time_attribute =
        __ATTR(full_time, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute jiffy_delta_attribute =
index c9be6f52c2541a061e3d86e154a56aa6f1050148..d6de72295d33fcfa58f91ae2d69a6cf61f83c2db 100644 (file)
@@ -50,28 +50,28 @@ static struct var_t vars[] = {
  * These attributes will appear in /sys/accessibility/speakup/ltlk.
  */
 static struct kobj_attribute caps_start_attribute =
-       __ATTR(caps_start, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(caps_start, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute caps_stop_attribute =
-       __ATTR(caps_stop, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(caps_stop, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute freq_attribute =
-       __ATTR(freq, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(freq, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute pitch_attribute =
-       __ATTR(pitch, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(pitch, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute punct_attribute =
-       __ATTR(punct, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(punct, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute rate_attribute =
-       __ATTR(rate, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(rate, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute tone_attribute =
-       __ATTR(tone, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(tone, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute voice_attribute =
-       __ATTR(voice, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(voice, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute vol_attribute =
-       __ATTR(vol, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(vol, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 
 static struct kobj_attribute delay_time_attribute =
        __ATTR(delay_time, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute direct_attribute =
-       __ATTR(direct, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(direct, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute full_time_attribute =
        __ATTR(full_time, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute jiffy_delta_attribute =
index ee6089502a96301cfd2fb6442b05d9f8598ac468..9ed726509261932d78eab89f9d5d40a921163d57 100644 (file)
@@ -61,35 +61,35 @@ static struct var_t vars[] = {
  * These attributes will appear in /sys/accessibility/speakup/soft.
  */
 static struct kobj_attribute caps_start_attribute =
-       __ATTR(caps_start, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(caps_start, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute caps_stop_attribute =
-       __ATTR(caps_stop, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(caps_stop, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute freq_attribute =
-       __ATTR(freq, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(freq, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute pitch_attribute =
-       __ATTR(pitch, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(pitch, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute punct_attribute =
-       __ATTR(punct, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(punct, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute rate_attribute =
-       __ATTR(rate, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(rate, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute tone_attribute =
-       __ATTR(tone, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(tone, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute voice_attribute =
-       __ATTR(voice, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(voice, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute vol_attribute =
-       __ATTR(vol, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(vol, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 
 /*
  * We should uncomment the following definition, when we agree on a
  * method of passing a language designation to the software synthesizer.
  * static struct kobj_attribute lang_attribute =
- *     __ATTR(lang, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+ *     __ATTR(lang, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
  */
 
 static struct kobj_attribute delay_time_attribute =
        __ATTR(delay_time, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute direct_attribute =
-       __ATTR(direct, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(direct, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute full_time_attribute =
        __ATTR(full_time, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute jiffy_delta_attribute =
index 711cf114df8376be2d6ad6182b3c4ac1f0886151..77f2dc2c3d975c4d40d791e650e0eff3d562c6cf 100644 (file)
@@ -48,24 +48,24 @@ static struct var_t vars[] = {
  * These attributes will appear in /sys/accessibility/speakup/spkout.
  */
 static struct kobj_attribute caps_start_attribute =
-       __ATTR(caps_start, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(caps_start, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute caps_stop_attribute =
-       __ATTR(caps_stop, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(caps_stop, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute pitch_attribute =
-       __ATTR(pitch, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(pitch, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute punct_attribute =
-       __ATTR(punct, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(punct, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute rate_attribute =
-       __ATTR(rate, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(rate, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute tone_attribute =
-       __ATTR(tone, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(tone, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute vol_attribute =
-       __ATTR(vol, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(vol, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 
 static struct kobj_attribute delay_time_attribute =
        __ATTR(delay_time, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute direct_attribute =
-       __ATTR(direct, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(direct, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute full_time_attribute =
        __ATTR(full_time, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute jiffy_delta_attribute =
index 3f0be04df071d1356d87a43fec71f49b29877b57..dbe84b13772c08cc8e124e13dab8121cdef860da 100644 (file)
@@ -44,22 +44,22 @@ static struct var_t vars[] = {
  * These attributes will appear in /sys/accessibility/speakup/txprt.
  */
 static struct kobj_attribute caps_start_attribute =
-       __ATTR(caps_start, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(caps_start, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute caps_stop_attribute =
-       __ATTR(caps_stop, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(caps_stop, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute pitch_attribute =
-       __ATTR(pitch, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(pitch, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute rate_attribute =
-       __ATTR(rate, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(rate, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute tone_attribute =
-       __ATTR(tone, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(tone, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute vol_attribute =
-       __ATTR(vol, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(vol, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 
 static struct kobj_attribute delay_time_attribute =
        __ATTR(delay_time, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute direct_attribute =
-       __ATTR(direct, S_IWUGO|S_IRUGO, spk_var_show, spk_var_store);
+       __ATTR(direct, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute full_time_attribute =
        __ATTR(full_time, S_IWUSR|S_IRUGO, spk_var_show, spk_var_store);
 static struct kobj_attribute jiffy_delta_attribute =