diff options
| author | Denis V. Lunev <den@openvz.org> | 2008-04-29 04:02:27 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-04-29 11:06:22 -0400 |
| commit | cf7acfab032ff262f42954328cdfd20a5d9aaaac (patch) | |
| tree | 231698d72d4508f3b26f606f18ef844387ec43e5 /drivers/acpi | |
| parent | 667471386d4068e75a6a55b615701ced61eb6333 (diff) | |
acpi: use non-racy method for proc entries creation
Use proc_create()/proc_create_data() to make sure that ->proc_fops and ->data
be setup before gluing PDE to main tree.
Add correct ->owner to proc_fops to fix reading/module unloading race.
Signed-off-by: Denis V. Lunev <den@openvz.org>
Cc: Len Brown <lenb@kernel.org>
Cc: Alexey Dobriyan <adobriyan@gmail.com>
Cc: "Eric W. Biederman" <ebiederm@xmission.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers/acpi')
| -rw-r--r-- | drivers/acpi/ac.c | 12 | ||||
| -rw-r--r-- | drivers/acpi/battery.c | 12 | ||||
| -rw-r--r-- | drivers/acpi/button.c | 24 | ||||
| -rw-r--r-- | drivers/acpi/ec.c | 11 | ||||
| -rw-r--r-- | drivers/acpi/event.c | 8 | ||||
| -rw-r--r-- | drivers/acpi/fan.c | 14 | ||||
| -rw-r--r-- | drivers/acpi/power.c | 11 | ||||
| -rw-r--r-- | drivers/acpi/processor_core.c | 39 | ||||
| -rw-r--r-- | drivers/acpi/processor_idle.c | 13 | ||||
| -rw-r--r-- | drivers/acpi/processor_perflib.c | 13 | ||||
| -rw-r--r-- | drivers/acpi/processor_thermal.c | 1 | ||||
| -rw-r--r-- | drivers/acpi/processor_throttling.c | 1 | ||||
| -rw-r--r-- | drivers/acpi/sbs.c | 35 | ||||
| -rw-r--r-- | drivers/acpi/sleep/proc.c | 26 | ||||
| -rw-r--r-- | drivers/acpi/system.c | 27 | ||||
| -rw-r--r-- | drivers/acpi/thermal.c | 67 | ||||
| -rw-r--r-- | drivers/acpi/video.c | 112 |
17 files changed, 162 insertions, 264 deletions
diff --git a/drivers/acpi/ac.c b/drivers/acpi/ac.c index 43a95e5640d..5b73f6a2cd8 100644 --- a/drivers/acpi/ac.c +++ b/drivers/acpi/ac.c | |||
| @@ -92,6 +92,7 @@ struct acpi_ac { | |||
| 92 | 92 | ||
| 93 | #ifdef CONFIG_ACPI_PROCFS_POWER | 93 | #ifdef CONFIG_ACPI_PROCFS_POWER |
| 94 | static const struct file_operations acpi_ac_fops = { | 94 | static const struct file_operations acpi_ac_fops = { |
| 95 | .owner = THIS_MODULE, | ||
| 95 | .open = acpi_ac_open_fs, | 96 | .open = acpi_ac_open_fs, |
| 96 | .read = seq_read, | 97 | .read = seq_read, |
| 97 | .llseek = seq_lseek, | 98 | .llseek = seq_lseek, |
| @@ -195,16 +196,11 @@ static int acpi_ac_add_fs(struct acpi_device *device) | |||
| 195 | } | 196 | } |
| 196 | 197 | ||
| 197 | /* 'state' [R] */ | 198 | /* 'state' [R] */ |
| 198 | entry = create_proc_entry(ACPI_AC_FILE_STATE, | 199 | entry = proc_create_data(ACPI_AC_FILE_STATE, |
| 199 | S_IRUGO, acpi_device_dir(device)); | 200 | S_IRUGO, acpi_device_dir(device), |
| 201 | &acpi_ac_fops, acpi_driver_data(device)); | ||
| 200 | if (!entry) | 202 | if (!entry) |
| 201 | return -ENODEV; | 203 | return -ENODEV; |
| 202 | else { | ||
| 203 | entry->proc_fops = &acpi_ac_fops; | ||
| 204 | entry->data = acpi_driver_data(device); | ||
| 205 | entry->owner = THIS_MODULE; | ||
| 206 | } | ||
| 207 | |||
| 208 | return 0; | 204 | return 0; |
| 209 | } | 205 | } |
| 210 | 206 | ||
diff --git a/drivers/acpi/battery.c b/drivers/acpi/battery.c index d5729d5dc19..b1c723f9f58 100644 --- a/drivers/acpi/battery.c +++ b/drivers/acpi/battery.c | |||
| @@ -741,15 +741,13 @@ static int acpi_battery_add_fs(struct acpi_device *device) | |||
| 741 | } | 741 | } |
| 742 | 742 | ||
| 743 | for (i = 0; i < ACPI_BATTERY_NUMFILES; ++i) { | 743 | for (i = 0; i < ACPI_BATTERY_NUMFILES; ++i) { |
| 744 | entry = create_proc_entry(acpi_battery_file[i].name, | 744 | entry = proc_create_data(acpi_battery_file[i].name, |
| 745 | acpi_battery_file[i].mode, acpi_device_dir(device)); | 745 | acpi_battery_file[i].mode, |
| 746 | acpi_device_dir(device), | ||
| 747 | &acpi_battery_file[i].ops, | ||
| 748 | acpi_driver_data(device)); | ||
| 746 | if (!entry) | 749 | if (!entry) |
| 747 | return -ENODEV; | 750 | return -ENODEV; |
| 748 | else { | ||
| 749 | entry->proc_fops = &acpi_battery_file[i].ops; | ||
| 750 | entry->data = acpi_driver_data(device); | ||
| 751 | entry->owner = THIS_MODULE; | ||
| 752 | } | ||
| 753 | } | 751 | } |
| 754 | return 0; | 752 | return 0; |
| 755 | } | 753 | } |
diff --git a/drivers/acpi/button.c b/drivers/acpi/button.c index 6c5da83cdb6..1dfec413588 100644 --- a/drivers/acpi/button.c +++ b/drivers/acpi/button.c | |||
| @@ -102,6 +102,7 @@ struct acpi_button { | |||
| 102 | }; | 102 | }; |
| 103 | 103 | ||
| 104 | static const struct file_operations acpi_button_info_fops = { | 104 | static const struct file_operations acpi_button_info_fops = { |
| 105 | .owner = THIS_MODULE, | ||
| 105 | .open = acpi_button_info_open_fs, | 106 | .open = acpi_button_info_open_fs, |
| 106 | .read = seq_read, | 107 | .read = seq_read, |
| 107 | .llseek = seq_lseek, | 108 | .llseek = seq_lseek, |
| @@ -109,6 +110,7 @@ static const struct file_operations acpi_button_info_fops = { | |||
| 109 | }; | 110 | }; |
| 110 | 111 | ||
| 111 | static const struct file_operations acpi_button_state_fops = { | 112 | static const struct file_operations acpi_button_state_fops = { |
| 113 | .owner = THIS_MODULE, | ||
| 112 | .open = acpi_button_state_open_fs, | 114 | .open = acpi_button_state_open_fs, |
| 113 | .read = seq_read, | 115 | .read = seq_read, |
| 114 | .llseek = seq_lseek, | 116 | .llseek = seq_lseek, |
| @@ -207,27 +209,21 @@ static int acpi_button_add_fs(struct acpi_device *device) | |||
| 207 | acpi_device_dir(device)->owner = THIS_MODULE; | 209 | acpi_device_dir(device)->owner = THIS_MODULE; |
| 208 | 210 | ||
| 209 | /* 'info' [R] */ | 211 | /* 'info' [R] */ |
| 210 | entry = create_proc_entry(ACPI_BUTTON_FILE_INFO, | 212 | entry = proc_create_data(ACPI_BUTTON_FILE_INFO, |
| 211 | S_IRUGO, acpi_device_dir(device)); | 213 | S_IRUGO, acpi_device_dir(device), |
| 214 | &acpi_button_info_fops, | ||
| 215 | acpi_driver_data(device)); | ||
| 212 | if (!entry) | 216 | if (!entry) |
| 213 | return -ENODEV; | 217 | return -ENODEV; |
| 214 | else { | ||
| 215 | entry->proc_fops = &acpi_button_info_fops; | ||
| 216 | entry->data = acpi_driver_data(device); | ||
| 217 | entry->owner = THIS_MODULE; | ||
| 218 | } | ||
| 219 | 218 | ||
| 220 | /* show lid state [R] */ | 219 | /* show lid state [R] */ |
| 221 | if (button->type == ACPI_BUTTON_TYPE_LID) { | 220 | if (button->type == ACPI_BUTTON_TYPE_LID) { |
| 222 | entry = create_proc_entry(ACPI_BUTTON_FILE_STATE, | 221 | entry = proc_create_data(ACPI_BUTTON_FILE_STATE, |
| 223 | S_IRUGO, acpi_device_dir(device)); | 222 | S_IRUGO, acpi_device_dir(device), |
| 223 | &acpi_button_state_fops, | ||
| 224 | acpi_driver_data(device)); | ||
| 224 | if (!entry) | 225 | if (!entry) |
| 225 | return -ENODEV; | 226 | return -ENODEV; |
| 226 | else { | ||
| 227 | entry->proc_fops = &acpi_button_state_fops; | ||
| 228 | entry->data = acpi_driver_data(device); | ||
| 229 | entry->owner = THIS_MODULE; | ||
| 230 | } | ||
| 231 | } | 227 | } |
| 232 | 228 | ||
| 233 | return 0; | 229 | return 0; |
diff --git a/drivers/acpi/ec.c b/drivers/acpi/ec.c index 7222a18a031..e3f04b272f3 100644 --- a/drivers/acpi/ec.c +++ b/drivers/acpi/ec.c | |||
| @@ -669,16 +669,11 @@ static int acpi_ec_add_fs(struct acpi_device *device) | |||
| 669 | return -ENODEV; | 669 | return -ENODEV; |
| 670 | } | 670 | } |
| 671 | 671 | ||
| 672 | entry = create_proc_entry(ACPI_EC_FILE_INFO, S_IRUGO, | 672 | entry = proc_create_data(ACPI_EC_FILE_INFO, S_IRUGO, |
| 673 | acpi_device_dir(device)); | 673 | acpi_device_dir(device), |
| 674 | &acpi_ec_info_ops, acpi_driver_data(device)); | ||
| 674 | if (!entry) | 675 | if (!entry) |
| 675 | return -ENODEV; | 676 | return -ENODEV; |
| 676 | else { | ||
| 677 | entry->proc_fops = &acpi_ec_info_ops; | ||
| 678 | entry->data = acpi_driver_data(device); | ||
| 679 | entry->owner = THIS_MODULE; | ||
| 680 | } | ||
| 681 | |||
| 682 | return 0; | 677 | return 0; |
| 683 | } | 678 | } |
| 684 | 679 | ||
diff --git a/drivers/acpi/event.c b/drivers/acpi/event.c index abec1ca94cf..0c24bd4d656 100644 --- a/drivers/acpi/event.c +++ b/drivers/acpi/event.c | |||
| @@ -102,6 +102,7 @@ static unsigned int acpi_system_poll_event(struct file *file, poll_table * wait) | |||
| 102 | } | 102 | } |
| 103 | 103 | ||
| 104 | static const struct file_operations acpi_system_event_ops = { | 104 | static const struct file_operations acpi_system_event_ops = { |
| 105 | .owner = THIS_MODULE, | ||
| 105 | .open = acpi_system_open_event, | 106 | .open = acpi_system_open_event, |
| 106 | .read = acpi_system_read_event, | 107 | .read = acpi_system_read_event, |
| 107 | .release = acpi_system_close_event, | 108 | .release = acpi_system_close_event, |
| @@ -294,10 +295,9 @@ static int __init acpi_event_init(void) | |||
| 294 | 295 | ||
| 295 | #ifdef CONFIG_ACPI_PROC_EVENT | 296 | #ifdef CONFIG_ACPI_PROC_EVENT |
| 296 | /* 'event' [R] */ | 297 | /* 'event' [R] */ |
| 297 | entry = create_proc_entry("event", S_IRUSR, acpi_root_dir); | 298 | entry = proc_create("event", S_IRUSR, acpi_root_dir, |
| 298 | if (entry) | 299 | &acpi_system_event_ops); |
| 299 | entry->proc_fops = &acpi_system_event_ops; | 300 | if (!entry) |
| 300 | else | ||
| 301 | return -ENODEV; | 301 | return -ENODEV; |
| 302 | #endif | 302 | #endif |
| 303 | 303 | ||
diff --git a/drivers/acpi/fan.c b/drivers/acpi/fan.c index c8e3cba423e..194077ab9b8 100644 --- a/drivers/acpi/fan.c +++ b/drivers/acpi/fan.c | |||
| @@ -192,17 +192,13 @@ static int acpi_fan_add_fs(struct acpi_device *device) | |||
| 192 | } | 192 | } |
| 193 | 193 | ||
| 194 | /* 'status' [R/W] */ | 194 | /* 'status' [R/W] */ |
| 195 | entry = create_proc_entry(ACPI_FAN_FILE_STATE, | 195 | entry = proc_create_data(ACPI_FAN_FILE_STATE, |
| 196 | S_IFREG | S_IRUGO | S_IWUSR, | 196 | S_IFREG | S_IRUGO | S_IWUSR, |
| 197 | acpi_device_dir(device)); | 197 | acpi_device_dir(device), |
| 198 | &acpi_fan_state_ops, | ||
| 199 | device); | ||
| 198 | if (!entry) | 200 | if (!entry) |
| 199 | return -ENODEV; | 201 | return -ENODEV; |
| 200 | else { | ||
| 201 | entry->proc_fops = &acpi_fan_state_ops; | ||
| 202 | entry->data = device; | ||
| 203 | entry->owner = THIS_MODULE; | ||
| 204 | } | ||
| 205 | |||
| 206 | return 0; | 202 | return 0; |
| 207 | } | 203 | } |
| 208 | 204 | ||
diff --git a/drivers/acpi/power.c b/drivers/acpi/power.c index 76bf6d90c70..21fc8bf0d31 100644 --- a/drivers/acpi/power.c +++ b/drivers/acpi/power.c | |||
| @@ -93,6 +93,7 @@ struct acpi_power_resource { | |||
| 93 | static struct list_head acpi_power_resource_list; | 93 | static struct list_head acpi_power_resource_list; |
| 94 | 94 | ||
| 95 | static const struct file_operations acpi_power_fops = { | 95 | static const struct file_operations acpi_power_fops = { |
| 96 | .owner = THIS_MODULE, | ||
| 96 | .open = acpi_power_open_fs, | 97 | .open = acpi_power_open_fs, |
| 97 | .read = seq_read, | 98 | .read = seq_read, |
| 98 | .llseek = seq_lseek, | 99 | .llseek = seq_lseek, |
| @@ -543,15 +544,11 @@ static int acpi_power_add_fs(struct acpi_device *device) | |||
| 543 | } | 544 | } |
| 544 | 545 | ||
| 545 | /* 'status' [R] */ | 546 | /* 'status' [R] */ |
| 546 | entry = create_proc_entry(ACPI_POWER_FILE_STATUS, | 547 | entry = proc_create_data(ACPI_POWER_FILE_STATUS, |
| 547 | S_IRUGO, acpi_device_dir(device)); | 548 | S_IRUGO, acpi_device_dir(device), |
| 549 | &acpi_power_fops, acpi_driver_data(device)); | ||
| 548 | if (!entry) | 550 | if (!entry) |
| 549 | return -EIO; | 551 | return -EIO; |
| 550 | else { | ||
| 551 | entry->proc_fops = &acpi_power_fops; | ||
| 552 | entry->data = acpi_driver_data(device); | ||
| 553 | } | ||
| 554 | |||
| 555 | return 0; | 552 | return 0; |
| 556 | } | 553 | } |
| 557 | 554 | ||
diff --git a/drivers/acpi/processor_core.c b/drivers/acpi/processor_core.c index a825b431b64..dd28c912e84 100644 --- a/drivers/acpi/processor_core.c +++ b/drivers/acpi/processor_core.c | |||
| @@ -112,6 +112,7 @@ static struct acpi_driver acpi_processor_driver = { | |||
| 112 | #define UNINSTALL_NOTIFY_HANDLER 2 | 112 | #define UNINSTALL_NOTIFY_HANDLER 2 |
| 113 | 113 | ||
| 114 | static const struct file_operations acpi_processor_info_fops = { | 114 | static const struct file_operations acpi_processor_info_fops = { |
| 115 | .owner = THIS_MODULE, | ||
| 115 | .open = acpi_processor_info_open_fs, | 116 | .open = acpi_processor_info_open_fs, |
| 116 | .read = seq_read, | 117 | .read = seq_read, |
| 117 | .llseek = seq_lseek, | 118 | .llseek = seq_lseek, |
| @@ -326,40 +327,30 @@ static int acpi_processor_add_fs(struct acpi_device *device) | |||
| 326 | acpi_device_dir(device)->owner = THIS_MODULE; | 327 | acpi_device_dir(device)->owner = THIS_MODULE; |
| 327 | 328 | ||
| 328 | /* 'info' [R] */ | 329 | /* 'info' [R] */ |
| 329 | entry = create_proc_entry(ACPI_PROCESSOR_FILE_INFO, | 330 | entry = proc_create_data(ACPI_PROCESSOR_FILE_INFO, |
| 330 | S_IRUGO, acpi_device_dir(device)); | 331 | S_IRUGO, acpi_device_dir(device), |
| 332 | &acpi_processor_info_fops, | ||
| 333 | acpi_driver_data(device)); | ||
| 331 | if (!entry) | 334 | if (!entry) |
| 332 | return -EIO; | 335 | return -EIO; |
| 333 | else { | ||
| 334 | entry->proc_fops = &acpi_processor_info_fops; | ||
| 335 | entry->data = acpi_driver_data(device); | ||
| 336 | entry->owner = THIS_MODULE; | ||
| 337 | } | ||
| 338 | 336 | ||
| 339 | /* 'throttling' [R/W] */ | 337 | /* 'throttling' [R/W] */ |
| 340 | entry = create_proc_entry(ACPI_PROCESSOR_FILE_THROTTLING, | 338 | entry = proc_create_data(ACPI_PROCESSOR_FILE_THROTTLING, |
| 341 | S_IFREG | S_IRUGO | S_IWUSR, | 339 | S_IFREG | S_IRUGO | S_IWUSR, |
| 342 | acpi_device_dir(device)); | 340 | acpi_device_dir(device), |
| 341 | &acpi_processor_throttling_fops, | ||
| 342 | acpi_driver_data(device)); | ||
| 343 | if (!entry) | 343 | if (!entry) |
| 344 | return -EIO; | 344 | return -EIO; |
| 345 | else { | ||
| 346 | entry->proc_fops = &acpi_processor_throttling_fops; | ||
| 347 | entry->data = acpi_driver_data(device); | ||
| 348 | entry->owner = THIS_MODULE; | ||
| 349 | } | ||
| 350 | 345 | ||
| 351 | /* 'limit' [R/W] */ | 346 | /* 'limit' [R/W] */ |
| 352 | entry = create_proc_entry(ACPI_PROCESSOR_FILE_LIMIT, | 347 | entry = proc_create_data(ACPI_PROCESSOR_FILE_LIMIT, |
| 353 | S_IFREG | S_IRUGO | S_IWUSR, | 348 | S_IFREG | S_IRUGO | S_IWUSR, |
| 354 | acpi_device_dir(device)); | 349 | acpi_device_dir(device), |
| 350 | &acpi_processor_limit_fops, | ||
| 351 | acpi_driver_data(device)); | ||
| 355 | if (!entry) | 352 | if (!entry) |
| 356 | return -EIO; | 353 | return -EIO; |
| 357 | else { | ||
| 358 | entry->proc_fops = &acpi_processor_limit_fops; | ||
| 359 | entry->data = acpi_driver_data(device); | ||
| 360 | entry->owner = THIS_MODULE; | ||
| 361 | } | ||
| 362 | |||
| 363 | return 0; | 354 | return 0; |
| 364 | } | 355 | } |
| 365 | 356 | ||
diff --git a/drivers/acpi/processor_idle.c b/drivers/acpi/processor_idle.c index 0d90ff5fd11..789d4947ed3 100644 --- a/drivers/acpi/processor_idle.c +++ b/drivers/acpi/processor_idle.c | |||
| @@ -1282,6 +1282,7 @@ static int acpi_processor_power_open_fs(struct inode *inode, struct file *file) | |||
| 1282 | } | 1282 | } |
| 1283 | 1283 | ||
| 1284 | static const struct file_operations acpi_processor_power_fops = { | 1284 | static const struct file_operations acpi_processor_power_fops = { |
| 1285 | .owner = THIS_MODULE, | ||
| 1285 | .open = acpi_processor_power_open_fs, | 1286 | .open = acpi_processor_power_open_fs, |
| 1286 | .read = seq_read, | 1287 | .read = seq_read, |
| 1287 | .llseek = seq_lseek, | 1288 | .llseek = seq_lseek, |
| @@ -1822,16 +1823,12 @@ int __cpuinit acpi_processor_power_init(struct acpi_processor *pr, | |||
| 1822 | } | 1823 | } |
| 1823 | 1824 | ||
| 1824 | /* 'power' [R] */ | 1825 | /* 'power' [R] */ |
| 1825 | entry = create_proc_entry(ACPI_PROCESSOR_FILE_POWER, | 1826 | entry = proc_create_data(ACPI_PROCESSOR_FILE_POWER, |
| 1826 | S_IRUGO, acpi_device_dir(device)); | 1827 | S_IRUGO, acpi_device_dir(device), |
| 1828 | &acpi_processor_power_fops, | ||
| 1829 | acpi_driver_data(device)); | ||
| 1827 | if (!entry) | 1830 | if (!entry) |
| 1828 | return -EIO; | 1831 | return -EIO; |
| 1829 | else { | ||
| 1830 | entry->proc_fops = &acpi_processor_power_fops; | ||
| 1831 | entry->data = acpi_driver_data(device); | ||
| 1832 | entry->owner = THIS_MODULE; | ||
| 1833 | } | ||
| 1834 | |||
| 1835 | return 0; | 1832 | return 0; |
| 1836 | } | 1833 | } |
| 1837 | 1834 | ||
diff --git a/drivers/acpi/processor_perflib.c b/drivers/acpi/processor_perflib.c index b477a4be8a6..d80b2d1441a 100644 --- a/drivers/acpi/processor_perflib.c +++ b/drivers/acpi/processor_perflib.c | |||
| @@ -411,6 +411,7 @@ EXPORT_SYMBOL(acpi_processor_notify_smm); | |||
| 411 | 411 | ||
| 412 | static int acpi_processor_perf_open_fs(struct inode *inode, struct file *file); | 412 | static int acpi_processor_perf_open_fs(struct inode *inode, struct file *file); |
| 413 | static struct file_operations acpi_processor_perf_fops = { | 413 | static struct file_operations acpi_processor_perf_fops = { |
| 414 | .owner = THIS_MODULE, | ||
| 414 | .open = acpi_processor_perf_open_fs, | 415 | .open = acpi_processor_perf_open_fs, |
| 415 | .read = seq_read, | 416 | .read = seq_read, |
| 416 | .llseek = seq_lseek, | 417 | .llseek = seq_lseek, |
| @@ -456,7 +457,6 @@ static int acpi_processor_perf_open_fs(struct inode *inode, struct file *file) | |||
| 456 | 457 | ||
| 457 | static void acpi_cpufreq_add_file(struct acpi_processor *pr) | 458 | static void acpi_cpufreq_add_file(struct acpi_processor *pr) |
| 458 | { | 459 | { |
| 459 | struct proc_dir_entry *entry = NULL; | ||
| 460 | struct acpi_device *device = NULL; | 460 | struct acpi_device *device = NULL; |
| 461 | 461 | ||
| 462 | 462 | ||
| @@ -464,14 +464,9 @@ static void acpi_cpufreq_add_file(struct acpi_processor *pr) | |||
| 464 | return; | 464 | return; |
| 465 | 465 | ||
| 466 | /* add file 'performance' [R/W] */ | 466 | /* add file 'performance' [R/W] */ |
| 467 | entry = create_proc_entry(ACPI_PROCESSOR_FILE_PERFORMANCE, | 467 | proc_create_data(ACPI_PROCESSOR_FILE_PERFORMANCE, S_IFREG | S_IRUGO, |
| 468 | S_IFREG | S_IRUGO, | 468 | acpi_device_dir(device), |
| 469 | acpi_device_dir(device)); | 469 | &acpi_processor_perf_fops, acpi_driver_data(device)); |
| 470 | if (entry){ | ||
| 471 | entry->proc_fops = &acpi_processor_perf_fops; | ||
| 472 | entry->data = acpi_driver_data(device); | ||
| 473 | entry->owner = THIS_MODULE; | ||
| 474 | } | ||
| 475 | return; | 470 | return; |
| 476 | } | 471 | } |
| 477 | 472 | ||
diff --git a/drivers/acpi/processor_thermal.c b/drivers/acpi/processor_thermal.c index 649ae99b921..ef34b18f95c 100644 --- a/drivers/acpi/processor_thermal.c +++ b/drivers/acpi/processor_thermal.c | |||
| @@ -509,6 +509,7 @@ static ssize_t acpi_processor_write_limit(struct file * file, | |||
| 509 | } | 509 | } |
| 510 | 510 | ||
| 511 | struct file_operations acpi_processor_limit_fops = { | 511 | struct file_operations acpi_processor_limit_fops = { |
| 512 | .owner = THIS_MODULE, | ||
| 512 | .open = acpi_processor_limit_open_fs, | 513 | .open = acpi_processor_limit_open_fs, |
| 513 | .read = seq_read, | 514 | .read = seq_read, |
| 514 | .write = acpi_processor_write_limit, | 515 | .write = acpi_processor_write_limit, |
diff --git a/drivers/acpi/processor_throttling.c b/drivers/acpi/processor_throttling.c index 0bba3a914e8..bb06738860c 100644 --- a/drivers/acpi/processor_throttling.c +++ b/drivers/acpi/processor_throttling.c | |||
| @@ -1252,6 +1252,7 @@ static ssize_t acpi_processor_write_throttling(struct file *file, | |||
| 1252 | } | 1252 | } |
| 1253 | 1253 | ||
| 1254 | struct file_operations acpi_processor_throttling_fops = { | 1254 | struct file_operations acpi_processor_throttling_fops = { |
| 1255 | .owner = THIS_MODULE, | ||
| 1255 | .open = acpi_processor_throttling_open_fs, | 1256 | .open = acpi_processor_throttling_open_fs, |
| 1256 | .read = seq_read, | 1257 | .read = seq_read, |
| 1257 | .write = acpi_processor_write_throttling, | 1258 | .write = acpi_processor_write_throttling, |
diff --git a/drivers/acpi/sbs.c b/drivers/acpi/sbs.c index 585ae3c9c8e..10a36512647 100644 --- a/drivers/acpi/sbs.c +++ b/drivers/acpi/sbs.c | |||
| @@ -483,8 +483,6 @@ acpi_sbs_add_fs(struct proc_dir_entry **dir, | |||
| 483 | struct file_operations *state_fops, | 483 | struct file_operations *state_fops, |
| 484 | struct file_operations *alarm_fops, void *data) | 484 | struct file_operations *alarm_fops, void *data) |
| 485 | { | 485 | { |
| 486 | struct proc_dir_entry *entry = NULL; | ||
| 487 | |||
| 488 | if (!*dir) { | 486 | if (!*dir) { |
| 489 | *dir = proc_mkdir(dir_name, parent_dir); | 487 | *dir = proc_mkdir(dir_name, parent_dir); |
| 490 | if (!*dir) { | 488 | if (!*dir) { |
| @@ -494,34 +492,19 @@ acpi_sbs_add_fs(struct proc_dir_entry **dir, | |||
| 494 | } | 492 | } |
| 495 | 493 | ||
| 496 | /* 'info' [R] */ | 494 | /* 'info' [R] */ |
| 497 | if (info_fops) { | 495 | if (info_fops) |
| 498 | entry = create_proc_entry(ACPI_SBS_FILE_INFO, S_IRUGO, *dir); | 496 | proc_create_data(ACPI_SBS_FILE_INFO, S_IRUGO, *dir, |
| 499 | if (entry) { | 497 | info_fops, data); |
| 500 | entry->proc_fops = info_fops; | ||
| 501 | entry->data = data; | ||
| 502 | entry->owner = THIS_MODULE; | ||
| 503 | } | ||
| 504 | } | ||
| 505 | 498 | ||
| 506 | /* 'state' [R] */ | 499 | /* 'state' [R] */ |
| 507 | if (state_fops) { | 500 | if (state_fops) |
| 508 | entry = create_proc_entry(ACPI_SBS_FILE_STATE, S_IRUGO, *dir); | 501 | proc_create_data(ACPI_SBS_FILE_STATE, S_IRUGO, *dir, |
| 509 | if (entry) { | 502 | state_fops, data); |
| 510 | entry->proc_fops = state_fops; | ||
| 511 | entry->data = data; | ||
| 512 | entry->owner = THIS_MODULE; | ||
| 513 | } | ||
| 514 | } | ||
| 515 | 503 | ||
| 516 | /* 'alarm' [R/W] */ | 504 | /* 'alarm' [R/W] */ |
| 517 | if (alarm_fops) { | 505 | if (alarm_fops) |
| 518 | entry = create_proc_entry(ACPI_SBS_FILE_ALARM, S_IRUGO, *dir); | 506 | proc_create_data(ACPI_SBS_FILE_ALARM, S_IRUGO, *dir, |
| 519 | if (entry) { | 507 | alarm_fops, data); |
| 520 | entry->proc_fops = alarm_fops; | ||
| 521 | entry->data = data; | ||
| 522 | entry->owner = THIS_MODULE; | ||
| 523 | } | ||
| 524 | } | ||
| 525 | return 0; | 508 | return 0; |
| 526 | } | 509 | } |
| 527 | 510 | ||
diff --git a/drivers/acpi/sleep/proc.c b/drivers/acpi/sleep/proc.c index f8df5217d47..8a5fe871051 100644 --- a/drivers/acpi/sleep/proc.c +++ b/drivers/acpi/sleep/proc.c | |||
| @@ -440,6 +440,7 @@ acpi_system_wakeup_device_open_fs(struct inode *inode, struct file *file) | |||
| 440 | } | 440 | } |
| 441 | 441 | ||
| 442 | static const struct file_operations acpi_system_wakeup_device_fops = { | 442 | static const struct file_operations acpi_system_wakeup_device_fops = { |
| 443 | .owner = THIS_MODULE, | ||
| 443 | .open = acpi_system_wakeup_device_open_fs, | 444 | .open = acpi_system_wakeup_device_open_fs, |
| 444 | .read = seq_read, | 445 | .read = seq_read, |
| 445 | .write = acpi_system_write_wakeup_device, | 446 | .write = acpi_system_write_wakeup_device, |
| @@ -449,6 +450,7 @@ static const struct file_operations acpi_system_wakeup_device_fops = { | |||
| 449 | 450 | ||
| 450 | #ifdef CONFIG_ACPI_PROCFS | 451 | #ifdef CONFIG_ACPI_PROCFS |
| 451 | static const struct file_operations acpi_system_sleep_fops = { | 452 | static const struct file_operations acpi_system_sleep_fops = { |
| 453 | .owner = THIS_MODULE, | ||
| 452 | .open = acpi_system_sleep_open_fs, | 454 | .open = acpi_system_sleep_open_fs, |
| 453 | .read = seq_read, | 455 | .read = seq_read, |
| 454 | .write = acpi_system_write_sleep, | 456 | .write = acpi_system_write_sleep, |
| @@ -459,6 +461,7 @@ static const struct file_operations acpi_system_sleep_fops = { | |||
| 459 | 461 | ||
| 460 | #ifdef HAVE_ACPI_LEGACY_ALARM | 462 | #ifdef HAVE_ACPI_LEGACY_ALARM |
| 461 | static const struct file_operations acpi_system_alarm_fops = { | 463 | static const struct file_operations acpi_system_alarm_fops = { |
| 464 | .owner = THIS_MODULE, | ||
| 462 | .open = acpi_system_alarm_open_fs, | 465 | .open = acpi_system_alarm_open_fs, |
| 463 | .read = seq_read, | 466 | .read = seq_read, |
| 464 | .write = acpi_system_write_alarm, | 467 | .write = acpi_system_write_alarm, |
| @@ -477,37 +480,26 @@ static u32 rtc_handler(void *context) | |||
| 477 | 480 | ||
| 478 | static int __init acpi_sleep_proc_init(void) | 481 | static int __init acpi_sleep_proc_init(void) |
| 479 | { | 482 | { |
| 480 | struct proc_dir_entry *entry = NULL; | ||
| 481 | |||
| 482 | if (acpi_disabled) | 483 | if (acpi_disabled) |
| 483 | return 0; | 484 | return 0; |
| 484 | 485 | ||
| 485 | #ifdef CONFIG_ACPI_PROCFS | 486 | #ifdef CONFIG_ACPI_PROCFS |
| 486 | /* 'sleep' [R/W] */ | 487 | /* 'sleep' [R/W] */ |
| 487 | entry = | 488 | proc_create("sleep", S_IFREG | S_IRUGO | S_IWUSR, |
| 488 | create_proc_entry("sleep", S_IFREG | S_IRUGO | S_IWUSR, | 489 | acpi_root_dir, &acpi_system_sleep_fops); |
| 489 | acpi_root_dir); | ||
| 490 | if (entry) | ||
| 491 | entry->proc_fops = &acpi_system_sleep_fops; | ||
| 492 | #endif /* CONFIG_ACPI_PROCFS */ | 490 | #endif /* CONFIG_ACPI_PROCFS */ |
| 493 | 491 | ||
| 494 | #ifdef HAVE_ACPI_LEGACY_ALARM | 492 | #ifdef HAVE_ACPI_LEGACY_ALARM |
| 495 | /* 'alarm' [R/W] */ | 493 | /* 'alarm' [R/W] */ |
| 496 | entry = | 494 | proc_create("alarm", S_IFREG | S_IRUGO | S_IWUSR, |
| 497 | create_proc_entry("alarm", S_IFREG | S_IRUGO | S_IWUSR, | 495 | acpi_root_dir, &acpi_system_alarm_fops); |
| 498 | acpi_root_dir); | ||
| 499 | if (entry) | ||
| 500 | entry->proc_fops = &acpi_system_alarm_fops; | ||
| 501 | 496 | ||
| 502 | acpi_install_fixed_event_handler(ACPI_EVENT_RTC, rtc_handler, NULL); | 497 | acpi_install_fixed_event_handler(ACPI_EVENT_RTC, rtc_handler, NULL); |
| 503 | #endif /* HAVE_ACPI_LEGACY_ALARM */ | 498 | #endif /* HAVE_ACPI_LEGACY_ALARM */ |
| 504 | 499 | ||
| 505 | /* 'wakeup device' [R/W] */ | 500 | /* 'wakeup device' [R/W] */ |
| 506 | entry = | 501 | proc_create("wakeup", S_IFREG | S_IRUGO | S_IWUSR, |
| 507 | create_proc_entry("wakeup", S_IFREG | S_IRUGO | S_IWUSR, | 502 | acpi_root_dir, &acpi_system_wakeup_device_fops); |
| 508 | acpi_root_dir); | ||
| 509 | if (entry) | ||
| 510 | entry->proc_fops = &acpi_system_wakeup_device_fops; | ||
| 511 | 503 | ||
| 512 | return 0; | 504 | return 0; |
| 513 | } | 505 | } |
diff --git a/drivers/acpi/system.c b/drivers/acpi/system.c index 4749f379a91..769f24855eb 100644 --- a/drivers/acpi/system.c +++ b/drivers/acpi/system.c | |||
| @@ -396,6 +396,7 @@ static int acpi_system_info_open_fs(struct inode *inode, struct file *file) | |||
| 396 | } | 396 | } |
| 397 | 397 | ||
| 398 | static const struct file_operations acpi_system_info_ops = { | 398 | static const struct file_operations acpi_system_info_ops = { |
| 399 | .owner = THIS_MODULE, | ||
| 399 | .open = acpi_system_info_open_fs, | 400 | .open = acpi_system_info_open_fs, |
| 400 | .read = seq_read, | 401 | .read = seq_read, |
| 401 | .llseek = seq_lseek, | 402 | .llseek = seq_lseek, |
| @@ -406,6 +407,7 @@ static ssize_t acpi_system_read_dsdt(struct file *, char __user *, size_t, | |||
| 406 | loff_t *); | 407 | loff_t *); |
| 407 | 408 | ||
| 408 | static const struct file_operations acpi_system_dsdt_ops = { | 409 | static const struct file_operations acpi_system_dsdt_ops = { |
| 410 | .owner = THIS_MODULE, | ||
| 409 | .read = acpi_system_read_dsdt, | 411 | .read = acpi_system_read_dsdt, |
| 410 | }; | 412 | }; |
| 411 | 413 | ||
| @@ -430,6 +432,7 @@ static ssize_t acpi_system_read_fadt(struct file *, char __user *, size_t, | |||
| 430 | loff_t *); | 432 | loff_t *); |
| 431 | 433 | ||
| 432 | static const struct file_operations acpi_system_fadt_ops = { | 434 | static const struct file_operations acpi_system_fadt_ops = { |
| 435 | .owner = THIS_MODULE, | ||
| 433 | .read = acpi_system_read_fadt, | 436 | .read = acpi_system_read_fadt, |
| 434 | }; | 437 | }; |
| 435 | 438 | ||
| @@ -454,31 +457,23 @@ static int acpi_system_procfs_init(void) | |||
| 454 | { | 457 | { |
| 455 | struct proc_dir_entry *entry; | 458 | struct proc_dir_entry *entry; |
| 456 | int error = 0; | 459 | int error = 0; |
| 457 | char *name; | ||
| 458 | 460 | ||
| 459 | /* 'info' [R] */ | 461 | /* 'info' [R] */ |
| 460 | name = ACPI_SYSTEM_FILE_INFO; | 462 | entry = proc_create(ACPI_SYSTEM_FILE_INFO, S_IRUGO, acpi_root_dir, |
| 461 | entry = create_proc_entry(name, S_IRUGO, acpi_root_dir); | 463 | &acpi_system_info_ops); |
| 462 | if (!entry) | 464 | if (!entry) |
| 463 | goto Error; | 465 | goto Error; |
| 464 | else { | ||
| 465 | entry->proc_fops = &acpi_system_info_ops; | ||
| 466 | } | ||
| 467 | 466 | ||
| 468 | /* 'dsdt' [R] */ | 467 | /* 'dsdt' [R] */ |
| 469 | name = ACPI_SYSTEM_FILE_DSDT; | 468 | entry = proc_create(ACPI_SYSTEM_FILE_DSDT, S_IRUSR, acpi_root_dir, |
| 470 | entry = create_proc_entry(name, S_IRUSR, acpi_root_dir); | 469 | &acpi_system_dsdt_ops); |
| 471 | if (entry) | 470 | if (!entry) |
| 472 | entry->proc_fops = &acpi_system_dsdt_ops; | ||
| 473 | else | ||
| 474 | goto Error; | 471 | goto Error; |
| 475 | 472 | ||
| 476 | /* 'fadt' [R] */ | 473 | /* 'fadt' [R] */ |
| 477 | name = ACPI_SYSTEM_FILE_FADT; | 474 | entry = proc_create(ACPI_SYSTEM_FILE_FADT, S_IRUSR, acpi_root_dir, |
| 478 | entry = create_proc_entry(name, S_IRUSR, acpi_root_dir); | 475 | &acpi_system_fadt_ops); |
| 479 | if (entry) | 476 | if (!entry) |
| 480 | entry->proc_fops = &acpi_system_fadt_ops; | ||
| 481 | else | ||
| 482 | goto Error; | 477 | goto Error; |
| 483 | 478 | ||
| 484 | Done: | 479 | Done: |
diff --git a/drivers/acpi/thermal.c b/drivers/acpi/thermal.c index 766bd25d337..0815ac3ae3d 100644 --- a/drivers/acpi/thermal.c +++ b/drivers/acpi/thermal.c | |||
| @@ -198,6 +198,7 @@ struct acpi_thermal { | |||
| 198 | }; | 198 | }; |
| 199 | 199 | ||
| 200 | static const struct file_operations acpi_thermal_state_fops = { | 200 | static const struct file_operations acpi_thermal_state_fops = { |
| 201 | .owner = THIS_MODULE, | ||
| 201 | .open = acpi_thermal_state_open_fs, | 202 | .open = acpi_thermal_state_open_fs, |
| 202 | .read = seq_read, | 203 | .read = seq_read, |
| 203 | .llseek = seq_lseek, | 204 | .llseek = seq_lseek, |
| @@ -205,6 +206,7 @@ static const struct file_operations acpi_thermal_state_fops = { | |||
| 205 | }; | 206 | }; |
| 206 | 207 | ||
| 207 | static const struct file_operations acpi_thermal_temp_fops = { | 208 | static const struct file_operations acpi_thermal_temp_fops = { |
| 209 | .owner = THIS_MODULE, | ||
| 208 | .open = acpi_thermal_temp_open_fs, | 210 | .open = acpi_thermal_temp_open_fs, |
| 209 | .read = seq_read, | 211 | .read = seq_read, |
| 210 | .llseek = seq_lseek, | 212 | .llseek = seq_lseek, |
| @@ -212,6 +214,7 @@ static const struct file_operations acpi_thermal_temp_fops = { | |||
| 212 | }; | 214 | }; |
| 213 | 215 | ||
| 214 | static const struct file_operations acpi_thermal_trip_fops = { | 216 | static const struct file_operations acpi_thermal_trip_fops = { |
| 217 | .owner = THIS_MODULE, | ||
| 215 | .open = acpi_thermal_trip_open_fs, | 218 | .open = acpi_thermal_trip_open_fs, |
| 216 | .read = seq_read, | 219 | .read = seq_read, |
| 217 | .llseek = seq_lseek, | 220 | .llseek = seq_lseek, |
| @@ -219,6 +222,7 @@ static const struct file_operations acpi_thermal_trip_fops = { | |||
| 219 | }; | 222 | }; |
| 220 | 223 | ||
| 221 | static const struct file_operations acpi_thermal_cooling_fops = { | 224 | static const struct file_operations acpi_thermal_cooling_fops = { |
| 225 | .owner = THIS_MODULE, | ||
| 222 | .open = acpi_thermal_cooling_open_fs, | 226 | .open = acpi_thermal_cooling_open_fs, |
| 223 | .read = seq_read, | 227 | .read = seq_read, |
| 224 | .write = acpi_thermal_write_cooling_mode, | 228 | .write = acpi_thermal_write_cooling_mode, |
| @@ -227,6 +231,7 @@ static const struct file_operations acpi_thermal_cooling_fops = { | |||
| 227 | }; | 231 | }; |
| 228 | 232 | ||
| 229 | static const struct file_operations acpi_thermal_polling_fops = { | 233 | static const struct file_operations acpi_thermal_polling_fops = { |
| 234 | .owner = THIS_MODULE, | ||
| 230 | .open = acpi_thermal_polling_open_fs, | 235 | .open = acpi_thermal_polling_open_fs, |
| 231 | .read = seq_read, | 236 | .read = seq_read, |
| 232 | .write = acpi_thermal_write_polling, | 237 | .write = acpi_thermal_write_polling, |
| @@ -1419,63 +1424,47 @@ static int acpi_thermal_add_fs(struct acpi_device *device) | |||
| 1419 | } | 1424 | } |
| 1420 | 1425 | ||
| 1421 | /* 'state' [R] */ | 1426 | /* 'state' [R] */ |
| 1422 | entry = create_proc_entry(ACPI_THERMAL_FILE_STATE, | 1427 | entry = proc_create_data(ACPI_THERMAL_FILE_STATE, |
| 1423 | S_IRUGO, acpi_device_dir(device)); | 1428 | S_IRUGO, acpi_device_dir(device), |
| 1429 | &acpi_thermal_state_fops, | ||
| 1430 | acpi_driver_data(device)); | ||
| 1424 | if (!entry) | 1431 | if (!entry) |
| 1425 | return -ENODEV; | 1432 | return -ENODEV; |
| 1426 | else { | ||
| 1427 | entry->proc_fops = &acpi_thermal_state_fops; | ||
| 1428 | entry->data = acpi_driver_data(device); | ||
| 1429 | entry->owner = THIS_MODULE; | ||
| 1430 | } | ||
| 1431 | 1433 | ||
| 1432 | /* 'temperature' [R] */ | 1434 | /* 'temperature' [R] */ |
| 1433 | entry = create_proc_entry(ACPI_THERMAL_FILE_TEMPERATURE, | 1435 | entry = proc_create_data(ACPI_THERMAL_FILE_TEMPERATURE, |
| 1434 | S_IRUGO, acpi_device_dir(device)); | 1436 | S_IRUGO, acpi_device_dir(device), |
| 1437 | &acpi_thermal_temp_fops, | ||
| 1438 | acpi_driver_data(device)); | ||
| 1435 | if (!entry) | 1439 | if (!entry) |
| 1436 | return -ENODEV; | 1440 | return -ENODEV; |
| 1437 | else { | ||
| 1438 | entry->proc_fops = &acpi_thermal_temp_fops; | ||
| 1439 | entry->data = acpi_driver_data(device); | ||
| 1440 | entry->owner = THIS_MODULE; | ||
| 1441 | } | ||
| 1442 | 1441 | ||
| 1443 | /* 'trip_points' [R] */ | 1442 | /* 'trip_points' [R] */ |
| 1444 | entry = create_proc_entry(ACPI_THERMAL_FILE_TRIP_POINTS, | 1443 | entry = proc_create_data(ACPI_THERMAL_FILE_TRIP_POINTS, |
| 1445 | S_IRUGO, | 1444 | S_IRUGO, |
| 1446 | acpi_device_dir(device)); | 1445 | acpi_device_dir(device), |
| 1446 | &acpi_thermal_trip_fops, | ||
| 1447 | acpi_driver_data(device)); | ||
| 1447 | if (!entry) | 1448 | if (!entry) |
| 1448 | return -ENODEV; | 1449 | return -ENODEV; |
| 1449 | else { | ||
| 1450 | entry->proc_fops = &acpi_thermal_trip_fops; | ||
| 1451 | entry->data = acpi_driver_data(device); | ||
| 1452 | entry->owner = THIS_MODULE; | ||
| 1453 | } | ||
| 1454 | 1450 | ||
| 1455 | /* 'cooling_mode' [R/W] */ | 1451 | /* 'cooling_mode' [R/W] */ |
| 1456 | entry = create_proc_entry(ACPI_THERMAL_FILE_COOLING_MODE, | 1452 | entry = proc_create_data(ACPI_THERMAL_FILE_COOLING_MODE, |
| 1457 | S_IFREG | S_IRUGO | S_IWUSR, | 1453 | S_IFREG | S_IRUGO | S_IWUSR, |
| 1458 | acpi_device_dir(device)); | 1454 | acpi_device_dir(device), |
| 1455 | &acpi_thermal_cooling_fops, | ||
| 1456 | acpi_driver_data(device)); | ||
| 1459 | if (!entry) | 1457 | if (!entry) |
| 1460 | return -ENODEV; | 1458 | return -ENODEV; |
| 1461 | else { | ||
| 1462 | entry->proc_fops = &acpi_thermal_cooling_fops; | ||
| 1463 | entry->data = acpi_driver_data(device); | ||
| 1464 | entry->owner = THIS_MODULE; | ||
| 1465 | } | ||
| 1466 | 1459 | ||
| 1467 | /* 'polling_frequency' [R/W] */ | 1460 | /* 'polling_frequency' [R/W] */ |
| 1468 | entry = create_proc_entry(ACPI_THERMAL_FILE_POLLING_FREQ, | 1461 | entry = proc_create_data(ACPI_THERMAL_FILE_POLLING_FREQ, |
| 1469 | S_IFREG | S_IRUGO | S_IWUSR, | 1462 | S_IFREG | S_IRUGO | S_IWUSR, |
| 1470 | acpi_device_dir(device)); | 1463 | acpi_device_dir(device), |
| 1464 | &acpi_thermal_polling_fops, | ||
| 1465 | acpi_driver_data(device)); | ||
| 1471 | if (!entry) | 1466 | if (!entry) |
| 1472 | return -ENODEV; | 1467 | return -ENODEV; |
| 1473 | else { | ||
| 1474 | entry->proc_fops = &acpi_thermal_polling_fops; | ||
| 1475 | entry->data = acpi_driver_data(device); | ||
| 1476 | entry->owner = THIS_MODULE; | ||
| 1477 | } | ||
| 1478 | |||
| 1479 | return 0; | 1468 | return 0; |
| 1480 | } | 1469 | } |
| 1481 | 1470 | ||
diff --git a/drivers/acpi/video.c b/drivers/acpi/video.c index 980a7418878..43b228314a8 100644 --- a/drivers/acpi/video.c +++ b/drivers/acpi/video.c | |||
| @@ -192,6 +192,7 @@ struct acpi_video_device { | |||
| 192 | /* bus */ | 192 | /* bus */ |
| 193 | static int acpi_video_bus_info_open_fs(struct inode *inode, struct file *file); | 193 | static int acpi_video_bus_info_open_fs(struct inode *inode, struct file *file); |
| 194 | static struct file_operations acpi_video_bus_info_fops = { | 194 | static struct file_operations acpi_video_bus_info_fops = { |
| 195 | .owner = THIS_MODULE, | ||
| 195 | .open = acpi_video_bus_info_open_fs, | 196 | .open = acpi_video_bus_info_open_fs, |
| 196 | .read = seq_read, | 197 | .read = seq_read, |
| 197 | .llseek = seq_lseek, | 198 | .llseek = seq_lseek, |
| @@ -200,6 +201,7 @@ static struct file_operations acpi_video_bus_info_fops = { | |||
| 200 | 201 | ||
| 201 | static int acpi_video_bus_ROM_open_fs(struct inode *inode, struct file *file); | 202 | static int acpi_video_bus_ROM_open_fs(struct inode *inode, struct file *file); |
| 202 | static struct file_operations acpi_video_bus_ROM_fops = { | 203 | static struct file_operations acpi_video_bus_ROM_fops = { |
| 204 | .owner = THIS_MODULE, | ||
| 203 | .open = acpi_video_bus_ROM_open_fs, | 205 | .open = acpi_video_bus_ROM_open_fs, |
| 204 | .read = seq_read, | 206 | .read = seq_read, |
| 205 | .llseek = seq_lseek, | 207 | .llseek = seq_lseek, |
| @@ -209,6 +211,7 @@ static struct file_operations acpi_video_bus_ROM_fops = { | |||
| 209 | static int acpi_video_bus_POST_info_open_fs(struct inode *inode, | 211 | static int acpi_video_bus_POST_info_open_fs(struct inode *inode, |
| 210 | struct file *file); | 212 | struct file *file); |
| 211 | static struct file_operations acpi_video_bus_POST_info_fops = { | 213 | static struct file_operations acpi_video_bus_POST_info_fops = { |
| 214 | .owner = THIS_MODULE, | ||
| 212 | .open = acpi_video_bus_POST_info_open_fs, | 215 | .open = acpi_video_bus_POST_info_open_fs, |
| 213 | .read = seq_read, | 216 | .read = seq_read, |
| 214 | .llseek = seq_lseek, | 217 | .llseek = seq_lseek, |
| @@ -217,6 +220,7 @@ static struct file_operations acpi_video_bus_POST_info_fops = { | |||
| 217 | 220 | ||
| 218 | static int acpi_video_bus_POST_open_fs(struct inode *inode, struct file *file); | 221 | static int acpi_video_bus_POST_open_fs(struct inode *inode, struct file *file); |
| 219 | static struct file_operations acpi_video_bus_POST_fops = { | 222 | static struct file_operations acpi_video_bus_POST_fops = { |
| 223 | .owner = THIS_MODULE, | ||
| 220 | .open = acpi_video_bus_POST_open_fs, | 224 | .open = acpi_video_bus_POST_open_fs, |
| 221 | .read = seq_read, | 225 | .read = seq_read, |
| 222 | .llseek = seq_lseek, | 226 | .llseek = seq_lseek, |
| @@ -225,6 +229,7 @@ static struct file_operations acpi_video_bus_POST_fops = { | |||
| 225 | 229 | ||
| 226 | static int acpi_video_bus_DOS_open_fs(struct inode *inode, struct file *file); | 230 | static int acpi_video_bus_DOS_open_fs(struct inode *inode, struct file *file); |
| 227 | static struct file_operations acpi_video_bus_DOS_fops = { | 231 | static struct file_operations acpi_video_bus_DOS_fops = { |
| 232 | .owner = THIS_MODULE, | ||
| 228 | .open = acpi_video_bus_DOS_open_fs, | 233 | .open = acpi_video_bus_DOS_open_fs, |
| 229 | .read = seq_read, | 234 | .read = seq_read, |
| 230 | .llseek = seq_lseek, | 235 | .llseek = seq_lseek, |
| @@ -235,6 +240,7 @@ static struct file_operations acpi_video_bus_DOS_fops = { | |||
| 235 | static int acpi_video_device_info_open_fs(struct inode *inode, | 240 | static int acpi_video_device_info_open_fs(struct inode *inode, |
| 236 | struct file *file); | 241 | struct file *file); |
| 237 | static struct file_operations acpi_video_device_info_fops = { | 242 | static struct file_operations acpi_video_device_info_fops = { |
| 243 | .owner = THIS_MODULE, | ||
| 238 | .open = acpi_video_device_info_open_fs, | 244 | .open = acpi_video_device_info_open_fs, |
| 239 | .read = seq_read, | 245 | .read = seq_read, |
| 240 | .llseek = seq_lseek, | 246 | .llseek = seq_lseek, |
| @@ -244,6 +250,7 @@ static struct file_operations acpi_video_device_info_fops = { | |||
| 244 | static int acpi_video_device_state_open_fs(struct inode *inode, | 250 | static int acpi_video_device_state_open_fs(struct inode *inode, |
| 245 | struct file *file); | 251 | struct file *file); |
| 246 | static struct file_operations acpi_video_device_state_fops = { | 252 | static struct file_operations acpi_video_device_state_fops = { |
| 253 | .owner = THIS_MODULE, | ||
| 247 | .open = acpi_video_device_state_open_fs, | 254 | .open = acpi_video_device_state_open_fs, |
| 248 | .read = seq_read, | 255 | .read = seq_read, |
| 249 | .llseek = seq_lseek, | 256 | .llseek = seq_lseek, |
| @@ -253,6 +260,7 @@ static struct file_operations acpi_video_device_state_fops = { | |||
| 253 | static int acpi_video_device_brightness_open_fs(struct inode *inode, | 260 | static int acpi_video_device_brightness_open_fs(struct inode *inode, |
| 254 | struct file *file); | 261 | struct file *file); |
| 255 | static struct file_operations acpi_video_device_brightness_fops = { | 262 | static struct file_operations acpi_video_device_brightness_fops = { |
| 263 | .owner = THIS_MODULE, | ||
| 256 | .open = acpi_video_device_brightness_open_fs, | 264 | .open = acpi_video_device_brightness_open_fs, |
| 257 | .read = seq_read, | 265 | .read = seq_read, |
| 258 | .llseek = seq_lseek, | 266 | .llseek = seq_lseek, |
| @@ -262,6 +270,7 @@ static struct file_operations acpi_video_device_brightness_fops = { | |||
| 262 | static int acpi_video_device_EDID_open_fs(struct inode *inode, | 270 | static int acpi_video_device_EDID_open_fs(struct inode *inode, |
| 263 | struct file *file); | 271 | struct file *file); |
| 264 | static struct file_operations acpi_video_device_EDID_fops = { | 272 | static struct file_operations acpi_video_device_EDID_fops = { |
| 273 | .owner = THIS_MODULE, | ||
| 265 | .open = acpi_video_device_EDID_open_fs, | 274 | .open = acpi_video_device_EDID_open_fs, |
| 266 | .read = seq_read, | 275 | .read = seq_read, |
| 267 | .llseek = seq_lseek, | 276 | .llseek = seq_lseek, |
| @@ -1070,51 +1079,36 @@ static int acpi_video_device_add_fs(struct acpi_device *device) | |||
| 1070 | } | 1079 | } |
| 1071 | 1080 | ||
| 1072 | /* 'info' [R] */ | 1081 | /* 'info' [R] */ |
| 1073 | entry = create_proc_entry("info", S_IRUGO, acpi_device_dir(device)); | 1082 | entry = proc_create_data("info", S_IRUGO, acpi_device_dir(device), |
| 1083 | &acpi_video_device_info_fops, acpi_driver_data(device)); | ||
| 1074 | if (!entry) | 1084 | if (!entry) |
| 1075 | return -ENODEV; | 1085 | return -ENODEV; |
| 1076 | else { | ||
| 1077 | entry->proc_fops = &acpi_video_device_info_fops; | ||
| 1078 | entry->data = acpi_driver_data(device); | ||
| 1079 | entry->owner = THIS_MODULE; | ||
| 1080 | } | ||
| 1081 | 1086 | ||
| 1082 | /* 'state' [R/W] */ | 1087 | /* 'state' [R/W] */ |
| 1083 | entry = | 1088 | acpi_video_device_state_fops.write = acpi_video_device_write_state; |
| 1084 | create_proc_entry("state", S_IFREG | S_IRUGO | S_IWUSR, | 1089 | entry = proc_create_data("state", S_IFREG | S_IRUGO | S_IWUSR, |
| 1085 | acpi_device_dir(device)); | 1090 | acpi_device_dir(device), |
| 1091 | &acpi_video_device_state_fops, | ||
| 1092 | acpi_driver_data(device)); | ||
| 1086 | if (!entry) | 1093 | if (!entry) |
| 1087 | return -ENODEV; | 1094 | return -ENODEV; |
| 1088 | else { | ||
| 1089 | acpi_video_device_state_fops.write = acpi_video_device_write_state; | ||
| 1090 | entry->proc_fops = &acpi_video_device_state_fops; | ||
| 1091 | entry->data = acpi_driver_data(device); | ||
| 1092 | entry->owner = THIS_MODULE; | ||
| 1093 | } | ||
| 1094 | 1095 | ||
| 1095 | /* 'brightness' [R/W] */ | 1096 | /* 'brightness' [R/W] */ |
| 1096 | entry = | 1097 | acpi_video_device_brightness_fops.write = |
| 1097 | create_proc_entry("brightness", S_IFREG | S_IRUGO | S_IWUSR, | 1098 | acpi_video_device_write_brightness; |
| 1098 | acpi_device_dir(device)); | 1099 | entry = proc_create_data("brightness", S_IFREG | S_IRUGO | S_IWUSR, |
| 1100 | acpi_device_dir(device), | ||
| 1101 | &acpi_video_device_brightness_fops, | ||
| 1102 | acpi_driver_data(device)); | ||
| 1099 | if (!entry) | 1103 | if (!entry) |
| 1100 | return -ENODEV; | 1104 | return -ENODEV; |
| 1101 | else { | ||
| 1102 | acpi_video_device_brightness_fops.write = acpi_video_device_write_brightness; | ||
| 1103 | entry->proc_fops = &acpi_video_device_brightness_fops; | ||
| 1104 | entry->data = acpi_driver_data(device); | ||
| 1105 | entry->owner = THIS_MODULE; | ||
| 1106 | } | ||
| 1107 | 1105 | ||
| 1108 | /* 'EDID' [R] */ | 1106 | /* 'EDID' [R] */ |
| 1109 | entry = create_proc_entry("EDID", S_IRUGO, acpi_device_dir(device)); | 1107 | entry = proc_create_data("EDID", S_IRUGO, acpi_device_dir(device), |
| 1108 | &acpi_video_device_EDID_fops, | ||
| 1109 | acpi_driver_data(device)); | ||
| 1110 | if (!entry) | 1110 | if (!entry) |
| 1111 | return -ENODEV; | 1111 | return -ENODEV; |
| 1112 | else { | ||
| 1113 | entry->proc_fops = &acpi_video_device_EDID_fops; | ||
| 1114 | entry->data = acpi_driver_data(device); | ||
| 1115 | entry->owner = THIS_MODULE; | ||
| 1116 | } | ||
| 1117 | |||
| 1118 | return 0; | 1112 | return 0; |
| 1119 | } | 1113 | } |
| 1120 | 1114 | ||
| @@ -1353,61 +1347,43 @@ static int acpi_video_bus_add_fs(struct acpi_device *device) | |||
| 1353 | } | 1347 | } |
| 1354 | 1348 | ||
| 1355 | /* 'info' [R] */ | 1349 | /* 'info' [R] */ |
| 1356 | entry = create_proc_entry("info", S_IRUGO, acpi_device_dir(device)); | 1350 | entry = proc_create_data("info", S_IRUGO, acpi_device_dir(device), |
| 1351 | &acpi_video_bus_info_fops, | ||
| 1352 | acpi_driver_data(device)); | ||
| 1357 | if (!entry) | 1353 | if (!entry) |
| 1358 | return -ENODEV; | 1354 | return -ENODEV; |
| 1359 | else { | ||
| 1360 | entry->proc_fops = &acpi_video_bus_info_fops; | ||
| 1361 | entry->data = acpi_driver_data(device); | ||
| 1362 | entry->owner = THIS_MODULE; | ||
| 1363 | } | ||
| 1364 | 1355 | ||
| 1365 | /* 'ROM' [R] */ | 1356 | /* 'ROM' [R] */ |
| 1366 | entry = create_proc_entry("ROM", S_IRUGO, acpi_device_dir(device)); | 1357 | entry = proc_create_data("ROM", S_IRUGO, acpi_device_dir(device), |
| 1358 | &acpi_video_bus_ROM_fops, | ||
| 1359 | acpi_driver_data(device)); | ||
| 1367 | if (!entry) | 1360 | if (!entry) |
| 1368 | return -ENODEV; | 1361 | return -ENODEV; |
| 1369 | else { | ||
| 1370 | entry->proc_fops = &acpi_video_bus_ROM_fops; | ||
| 1371 | entry->data = acpi_driver_data(device); | ||
| 1372 | entry->owner = THIS_MODULE; | ||
| 1373 | } | ||
| 1374 | 1362 | ||
| 1375 | /* 'POST_info' [R] */ | 1363 | /* 'POST_info' [R] */ |
| 1376 | entry = | 1364 | entry = proc_create_data("POST_info", S_IRUGO, acpi_device_dir(device), |
| 1377 | create_proc_entry("POST_info", S_IRUGO, acpi_device_dir(device)); | 1365 | &acpi_video_bus_POST_info_fops, |
| 1366 | acpi_driver_data(device)); | ||
| 1378 | if (!entry) | 1367 | if (!entry) |
| 1379 | return -ENODEV; | 1368 | return -ENODEV; |
| 1380 | else { | ||
| 1381 | entry->proc_fops = &acpi_video_bus_POST_info_fops; | ||
| 1382 | entry->data = acpi_driver_data(device); | ||
| 1383 | entry->owner = THIS_MODULE; | ||
| 1384 | } | ||
| 1385 | 1369 | ||
| 1386 | /* 'POST' [R/W] */ | 1370 | /* 'POST' [R/W] */ |
| 1387 | entry = | 1371 | acpi_video_bus_POST_fops.write = acpi_video_bus_write_POST; |
| 1388 | create_proc_entry("POST", S_IFREG | S_IRUGO | S_IRUSR, | 1372 | entry = proc_create_data("POST", S_IFREG | S_IRUGO | S_IRUSR, |
| 1389 | acpi_device_dir(device)); | 1373 | acpi_device_dir(device), |
| 1374 | &acpi_video_bus_POST_fops, | ||
| 1375 | acpi_driver_data(device)); | ||
| 1390 | if (!entry) | 1376 | if (!entry) |
| 1391 | return -ENODEV; | 1377 | return -ENODEV; |
| 1392 | else { | ||
| 1393 | acpi_video_bus_POST_fops.write = acpi_video_bus_write_POST; | ||
| 1394 | entry->proc_fops = &acpi_video_bus_POST_fops; | ||
| 1395 | entry->data = acpi_driver_data(device); | ||
| 1396 | entry->owner = THIS_MODULE; | ||
| 1397 | } | ||
| 1398 | 1378 | ||
| 1399 | /* 'DOS' [R/W] */ | 1379 | /* 'DOS' [R/W] */ |
| 1400 | entry = | 1380 | acpi_video_bus_DOS_fops.write = acpi_video_bus_write_DOS; |
| 1401 | create_proc_entry("DOS", S_IFREG | S_IRUGO | S_IRUSR, | 1381 | entry = proc_create_data("DOS", S_IFREG | S_IRUGO | S_IRUSR, |
| 1402 | acpi_device_dir(device)); | 1382 | acpi_device_dir(device), |
| 1383 | &acpi_video_bus_DOS_fops, | ||
| 1384 | acpi_driver_data(device)); | ||
| 1403 | if (!entry) | 1385 | if (!entry) |
| 1404 | return -ENODEV; | 1386 | return -ENODEV; |
| 1405 | else { | ||
| 1406 | acpi_video_bus_DOS_fops.write = acpi_video_bus_write_DOS; | ||
| 1407 | entry->proc_fops = &acpi_video_bus_DOS_fops; | ||
| 1408 | entry->data = acpi_driver_data(device); | ||
| 1409 | entry->owner = THIS_MODULE; | ||
| 1410 | } | ||
| 1411 | 1387 | ||
| 1412 | return 0; | 1388 | return 0; |
| 1413 | } | 1389 | } |
