aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorStefan Richter <stefanr@s5r6.in-berlin.de>2006-07-03 12:02:34 -0400
committerBen Collins <bcollins@ubuntu.com>2006-07-03 12:02:34 -0400
commit40fd89cc54a8a67c81b5aa40b22c4f40b39e47b9 (patch)
tree7a757e1bf10c9c53d40fdbab7601d6ea03d3781a /drivers
parent1ee0dc51fb68d2d25888250c554492c4926c5ec1 (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')
-rw-r--r--drivers/ieee1394/nodemgr.c19
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}
406static BUS_ATTR(destroy_node, S_IWUSR | S_IRUGO, fw_get_destroy_node, fw_set_destroy_node); 406static BUS_ATTR(destroy_node, S_IWUSR | S_IRUGO, fw_get_destroy_node, fw_set_destroy_node);
407 407
408static 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
418static ssize_t fw_set_rescan(struct bus_type *bus, const char *buf, size_t count) 409static 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}
430static ssize_t fw_get_rescan(struct bus_type *bus, char *buf) 415static ssize_t fw_get_rescan(struct bus_type *bus, char *buf)