From beda2efb06df18bd7816a8a45a71381696a1d29e Mon Sep 17 00:00:00 2001 From: Mattia Dongili Date: Sat, 13 Jan 2007 23:04:38 +0100 Subject: [PATCH] --- yaml --- r: 48697 b: refs/heads/master c: 05e2d8274ef4504db9941f7c515f340ab6c0b2e1 h: refs/heads/master i: 48695: 43185b8ea6bb83b47e372c9a93177cb1205789f3 v: v3 --- [refs] | 2 +- trunk/drivers/acpi/sony_acpi.c | 30 +++++++++++++++++++++--------- 2 files changed, 22 insertions(+), 10 deletions(-) diff --git a/[refs] b/[refs] index 61b4c98d2e8e..1319135c909d 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: c561162f10b9f35c9aa5c25eb8dbeb446f0c5201 +refs/heads/master: 05e2d8274ef4504db9941f7c515f340ab6c0b2e1 diff --git a/trunk/drivers/acpi/sony_acpi.c b/trunk/drivers/acpi/sony_acpi.c index 138f2b6184d3..69122ad778f5 100644 --- a/trunk/drivers/acpi/sony_acpi.c +++ b/trunk/drivers/acpi/sony_acpi.c @@ -296,6 +296,7 @@ static int sony_acpi_add(struct acpi_device *device) acpi_status status; int result; acpi_handle handle; + mode_t proc_file_mode; struct sony_acpi_value *item; sony_acpi_acpi_device = device; @@ -334,20 +335,31 @@ static int sony_acpi_add(struct acpi_device *device) } for (item = sony_acpi_values; item->name; ++item) { + proc_file_mode = 0; + if (!debug && item->debug) continue; if (item->acpiget && - ACPI_FAILURE(acpi_get_handle(sony_acpi_handle, + ACPI_SUCCESS(acpi_get_handle(sony_acpi_handle, item->acpiget, &handle))) - continue; + proc_file_mode = S_IRUSR; + else + printk(LOG_PFX "unable to get ACPI handle for %s (get)\n", + item->name); if (item->acpiset && - ACPI_FAILURE(acpi_get_handle(sony_acpi_handle, + ACPI_SUCCESS(acpi_get_handle(sony_acpi_handle, item->acpiset, &handle))) - continue; + proc_file_mode |= S_IWUSR; + else + printk(LOG_PFX "unable to get ACPI handle for %s (set)\n", + item->name); + + if (proc_file_mode == 0) + continue; - item->proc = create_proc_entry(item->name, 0666, + item->proc = create_proc_entry(item->name, proc_file_mode, acpi_device_dir(device)); if (!item->proc) { printk(LOG_PFX "unable to create proc entry\n"); @@ -366,15 +378,15 @@ static int sony_acpi_add(struct acpi_device *device) return 0; outproc: + for (item = sony_acpi_values; item->name; ++item) + if (item->proc) + remove_proc_entry(item->name, acpi_device_dir(device)); +outnotify: status = acpi_remove_notify_handler(sony_acpi_handle, ACPI_DEVICE_NOTIFY, sony_acpi_notify); if (ACPI_FAILURE(status)) printk(LOG_PFX "unable to remove notify handler\n"); -outnotify: - for (item = sony_acpi_values; item->name; ++item) - if (item->proc) - remove_proc_entry(item->name, acpi_device_dir(device)); outwalk: return result; }