diff options
author | Stefan Richter <stefanr@s5r6.in-berlin.de> | 2006-07-03 12:02:34 -0400 |
---|---|---|
committer | Ben Collins <bcollins@ubuntu.com> | 2006-07-03 12:02:34 -0400 |
commit | 40fd89cc54a8a67c81b5aa40b22c4f40b39e47b9 (patch) | |
tree | 7a757e1bf10c9c53d40fdbab7601d6ea03d3781a /drivers/ieee1394/nodemgr.c | |
parent | 1ee0dc51fb68d2d25888250c554492c4926c5ec1 (diff) |
[PATCH] ieee1394: nodemgr: do not spawn kernel_thread for sysfs rescan
nodemgr.c::fw_set_rescan() is used to re-run the driver core over
nodemgr's representation of unit directories in order to initiate
protocol driver probes. It is initiated via write access to one of
nodemgr's sysfs attributes. The purpose is to attach drivers to
units after switching a unit's ignore_driver attribute from 1 to 0.
It is not really necessary to fork a kernel_thread for this job. The
call to kernel_thread() can be eliminated to avoid the deprecated API
and to simplify the code a bit.
Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
Signed-off-by: Ben Collins <bcollins@ubuntu.com>
Diffstat (limited to 'drivers/ieee1394/nodemgr.c')
-rw-r--r-- | drivers/ieee1394/nodemgr.c | 19 |
1 files changed, 2 insertions, 17 deletions
diff --git a/drivers/ieee1394/nodemgr.c b/drivers/ieee1394/nodemgr.c index bfab7933d68c..1ce3d8a14ae7 100644 --- a/drivers/ieee1394/nodemgr.c +++ b/drivers/ieee1394/nodemgr.c | |||
@@ -405,26 +405,11 @@ static ssize_t fw_get_destroy_node(struct bus_type *bus, char *buf) | |||
405 | } | 405 | } |
406 | static BUS_ATTR(destroy_node, S_IWUSR | S_IRUGO, fw_get_destroy_node, fw_set_destroy_node); | 406 | static BUS_ATTR(destroy_node, S_IWUSR | S_IRUGO, fw_get_destroy_node, fw_set_destroy_node); |
407 | 407 | ||
408 | static int nodemgr_rescan_bus_thread(void *__unused) | ||
409 | { | ||
410 | /* No userlevel access needed */ | ||
411 | daemonize("kfwrescan"); | ||
412 | |||
413 | bus_rescan_devices(&ieee1394_bus_type); | ||
414 | |||
415 | return 0; | ||
416 | } | ||
417 | 408 | ||
418 | static ssize_t fw_set_rescan(struct bus_type *bus, const char *buf, size_t count) | 409 | static ssize_t fw_set_rescan(struct bus_type *bus, const char *buf, size_t count) |
419 | { | 410 | { |
420 | int state = simple_strtoul(buf, NULL, 10); | 411 | if (simple_strtoul(buf, NULL, 10) == 1) |
421 | 412 | bus_rescan_devices(&ieee1394_bus_type); | |
422 | /* Don't wait for this, or care about errors. Root could do | ||
423 | * something stupid and spawn this a lot of times, but that's | ||
424 | * root's fault. */ | ||
425 | if (state == 1) | ||
426 | kernel_thread(nodemgr_rescan_bus_thread, NULL, CLONE_KERNEL); | ||
427 | |||
428 | return count; | 413 | return count; |
429 | } | 414 | } |
430 | static ssize_t fw_get_rescan(struct bus_type *bus, char *buf) | 415 | static ssize_t fw_get_rescan(struct bus_type *bus, char *buf) |