summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@penguin.transmeta.com>2003-02-10 22:58:04 -0800
committerLinus Torvalds <torvalds@home.transmeta.com>2003-02-10 22:58:04 -0800
commit43fea1be12abf52dc12a61eef6059beed55c2df8 (patch)
tree61be163e2e6f5367fc61d76f8bcabde48a2acc24 /drivers
parentf0bec55fe38773d2022f1b585067a7a773942769 (diff)
Sanitize kernel daemon signal handling and process naming.
Add a name argument to daemonize() (va_arg) to avoid all the kernel threads having to duplicate the name setting over and over again. Make daemonize() disable all signals by default, and add a "allow_signal()" function to let daemons say they explicitly want to support a signal. Make flush_signal() take the signal lock, so that callers do not need to.
Diffstat (limited to 'drivers')
-rw-r--r--drivers/block/loop.c8
-rw-r--r--drivers/char/hvc_console.c4
-rw-r--r--drivers/hotplug/cpci_hotplug_core.c6
-rw-r--r--drivers/hotplug/cpqphp_ctrl.c5
-rw-r--r--drivers/hotplug/ibmphp_hpc.c8
-rw-r--r--drivers/ieee1394/nodemgr.c5
-rw-r--r--drivers/input/serio/serio.c4
-rw-r--r--drivers/isdn/hardware/eicon/i4lididrv.c3
-rw-r--r--drivers/macintosh/adb.c9
-rw-r--r--drivers/md/md.c8
-rw-r--r--drivers/media/dvb/av7110/av7110.c4
-rw-r--r--drivers/media/dvb/dvb-core/dvb_frontend.c4
-rw-r--r--drivers/media/video/msp3400.c8
-rw-r--r--drivers/media/video/saa7134/saa7134-tvaudio.c4
-rw-r--r--drivers/media/video/tvaudio.c4
-rw-r--r--drivers/message/i2o/i2o_block.c6
-rw-r--r--drivers/message/i2o/i2o_core.c15
-rw-r--r--drivers/mtd/devices/blkmtd.c7
-rw-r--r--drivers/mtd/mtdblock.c7
-rw-r--r--drivers/net/8139too.c12
-rw-r--r--drivers/net/irda/sir_kthread.c8
-rw-r--r--drivers/pnp/pnpbios/core.c4
-rw-r--r--drivers/s390/net/lcs.c8
-rw-r--r--drivers/sbus/char/bbc_envctrl.c4
-rw-r--r--drivers/sbus/char/envctrl.c5
-rw-r--r--drivers/scsi/aacraid/commsup.c4
-rw-r--r--drivers/scsi/aic7xxx/aic79xx_osm.c3
-rw-r--r--drivers/scsi/aic7xxx/aic7xxx_osm.c8
-rw-r--r--drivers/scsi/cpqfcTSworker.c7
-rw-r--r--drivers/scsi/scsi_error.c12
-rw-r--r--drivers/usb/core/hub.c6
-rw-r--r--drivers/usb/storage/usb.c11
32 files changed, 56 insertions, 155 deletions
diff --git a/drivers/block/loop.c b/drivers/block/loop.c
index 71ae15a0c6fd..85636a00c3c6 100644
--- a/drivers/block/loop.c
+++ b/drivers/block/loop.c
@@ -577,18 +577,12 @@ static int loop_thread(void *data)
struct loop_device *lo = data;
struct bio *bio;
- daemonize();
+ daemonize("loop%d", lo->lo_number);
- sprintf(current->comm, "loop%d", lo->lo_number);
current->flags |= PF_IOTHREAD; /* loop can be used in an encrypted device
hence, it mustn't be stopped at all because it could
be indirectly used during suspension */
- spin_lock_irq(&current->sighand->siglock);
- sigfillset(&current->blocked);
- flush_signals(current);
- spin_unlock_irq(&current->sighand->siglock);
-
set_user_nice(current, -20);
lo->lo_state = Lo_bound;
diff --git a/drivers/char/hvc_console.c b/drivers/char/hvc_console.c
index b3fe12431691..fb2ee72e6db2 100644
--- a/drivers/char/hvc_console.c
+++ b/drivers/char/hvc_console.c
@@ -233,9 +233,7 @@ int khvcd(void *unused)
{
int i;
- daemonize();
- strcpy(current->comm, "khvcd");
- sigfillset(&current->blocked);
+ daemonize("khvcd");
for (;;) {
if (!cpus_in_xmon) {
diff --git a/drivers/hotplug/cpci_hotplug_core.c b/drivers/hotplug/cpci_hotplug_core.c
index 0b109d2aa9cc..e8981f780b62 100644
--- a/drivers/hotplug/cpci_hotplug_core.c
+++ b/drivers/hotplug/cpci_hotplug_core.c
@@ -622,8 +622,7 @@ event_thread(void *data)
struct list_head *tmp;
lock_kernel();
- daemonize();
- strcpy(current->comm, "cpci_hp_eventd");
+ daemonize("cpci_hp_eventd");
unlock_kernel();
dbg("%s - event thread started", __FUNCTION__);
@@ -682,8 +681,7 @@ poll_thread(void *data)
struct list_head *tmp;
lock_kernel();
- daemonize();
- strcpy(current->comm, "cpci_hp_polld");
+ daemonize("cpci_hp_polld");
unlock_kernel();
while(1) {
diff --git a/drivers/hotplug/cpqphp_ctrl.c b/drivers/hotplug/cpqphp_ctrl.c
index deb229539165..b9a8432487f4 100644
--- a/drivers/hotplug/cpqphp_ctrl.c
+++ b/drivers/hotplug/cpqphp_ctrl.c
@@ -1709,10 +1709,7 @@ static int event_thread(void* data)
{
struct controller *ctrl;
lock_kernel();
- daemonize();
-
- // New name
- strcpy(current->comm, "phpd_event");
+ daemonize("phpd_event");
unlock_kernel();
diff --git a/drivers/hotplug/ibmphp_hpc.c b/drivers/hotplug/ibmphp_hpc.c
index ae959809e8a8..0bc95c57056b 100644
--- a/drivers/hotplug/ibmphp_hpc.c
+++ b/drivers/hotplug/ibmphp_hpc.c
@@ -1125,13 +1125,9 @@ static int process_changeinlatch (u8 old, u8 new, struct controller *ctrl)
static int hpc_poll_thread (void *data)
{
debug ("%s - Entry\n", __FUNCTION__);
- lock_kernel ();
- daemonize ();
- // New name
- strcpy (current->comm, "hpc_poll");
-
- unlock_kernel ();
+ daemonize("hpc_poll");
+ allow_signal(SIGKILL);
poll_hpc ();
diff --git a/drivers/ieee1394/nodemgr.c b/drivers/ieee1394/nodemgr.c
index 0f5440f9966b..b0ad6ca47ec1 100644
--- a/drivers/ieee1394/nodemgr.c
+++ b/drivers/ieee1394/nodemgr.c
@@ -1216,10 +1216,9 @@ static int nodemgr_host_thread(void *__hi)
struct host_info *hi = (struct host_info *)__hi;
/* No userlevel access needed */
- daemonize();
+ daemonize("knodemgrd");
+ allow_signal(SIGTERM);
- strcpy(current->comm, "knodemgrd");
-
/* Sit and wait for a signal to probe the nodes on the bus. This
* happens when we get a bus reset. */
while (!down_interruptible(&hi->reset_sem) &&
diff --git a/drivers/input/serio/serio.c b/drivers/input/serio/serio.c
index da245d5c13ab..bf29f0becf61 100644
--- a/drivers/input/serio/serio.c
+++ b/drivers/input/serio/serio.c
@@ -105,8 +105,8 @@ void serio_handle_events(void)
static int serio_thread(void *nothing)
{
lock_kernel();
- daemonize();
- strcpy(current->comm, "kseriod");
+ daemonize("kseriod");
+ allow_signal(SIGTERM);
do {
serio_handle_events();
diff --git a/drivers/isdn/hardware/eicon/i4lididrv.c b/drivers/isdn/hardware/eicon/i4lididrv.c
index 38cf7c984607..b3be96a6d625 100644
--- a/drivers/isdn/hardware/eicon/i4lididrv.c
+++ b/drivers/isdn/hardware/eicon/i4lididrv.c
@@ -326,10 +326,7 @@ divad_thread(void * data)
if(!(atomic_read(&thread_running)))
break;
if(signal_pending(current)) {
- /* we may want to do something on signals here */
- spin_lock_irq(&current->sigmask_lock);
flush_signals(current);
- spin_unlock_irq(&current->sigmask_lock);
} else {
run_task_queue(&tq_divad);
}
diff --git a/drivers/macintosh/adb.c b/drivers/macintosh/adb.c
index 6e994acf13b6..a5a983fdbede 100644
--- a/drivers/macintosh/adb.c
+++ b/drivers/macintosh/adb.c
@@ -244,12 +244,13 @@ static int adb_scan_bus(void)
static int
adb_probe_task(void *x)
{
+ sigset_t blocked;
+
strcpy(current->comm, "kadbprobe");
-
- spin_lock_irq(&current->sighand->siglock);
- sigfillset(&current->blocked);
+
+ sigfillset(&blocked);
+ sicprocmask(SIG_BLOCK, &blocked, NULL);
flush_signals(current);
- spin_unlock_irq(&current->sighand->siglock);
printk(KERN_INFO "adb: starting probe task...\n");
do_adb_reset_bus();
diff --git a/drivers/md/md.c b/drivers/md/md.c
index 9f1d5d0878e5..3f4f379b0bc3 100644
--- a/drivers/md/md.c
+++ b/drivers/md/md.c
@@ -2444,9 +2444,7 @@ static struct block_device_operations md_fops =
static inline void flush_curr_signals(void)
{
- spin_lock(&current->sighand->siglock);
flush_signals(current);
- spin_unlock(&current->sighand->siglock);
}
int md_thread(void * arg)
@@ -2459,12 +2457,10 @@ int md_thread(void * arg)
* Detach thread
*/
- daemonize();
+ daemonize(thread->name);
- sprintf(current->comm, thread->name);
current->exit_signal = SIGCHLD;
- siginitsetinv(&current->blocked, sigmask(SIGKILL));
- flush_curr_signals();
+ allow_signal(SIGKILL);
thread->tsk = current;
/*
diff --git a/drivers/media/dvb/av7110/av7110.c b/drivers/media/dvb/av7110/av7110.c
index f0178c18e0e5..9a1dc9f5ea7d 100644
--- a/drivers/media/dvb/av7110/av7110.c
+++ b/drivers/media/dvb/av7110/av7110.c
@@ -349,13 +349,13 @@ static int arm_thread(void *data)
lock_kernel();
#if 0
- daemonize();
+ daemonize("arm_mon");
#else
exit_mm(current);
current->session=current->pgrp=1;
-#endif
sigfillset(&current->blocked);
strcpy(current->comm, "arm_mon");
+#endif
av7110->arm_thread = current;
unlock_kernel();
diff --git a/drivers/media/dvb/dvb-core/dvb_frontend.c b/drivers/media/dvb/dvb-core/dvb_frontend.c
index 344621653fea..2c18162a6665 100644
--- a/drivers/media/dvb/dvb-core/dvb_frontend.c
+++ b/drivers/media/dvb/dvb-core/dvb_frontend.c
@@ -482,9 +482,7 @@ int dvb_frontend_thread (void *data)
dprintk ("%s\n", __FUNCTION__);
lock_kernel ();
- daemonize ();
- sigfillset (&current->blocked);
- strncpy (current->comm, "kdvb-fe", sizeof (current->comm));
+ daemonize("kdvb-fe");
fe->thread = current;
unlock_kernel ();
diff --git a/drivers/media/video/msp3400.c b/drivers/media/video/msp3400.c
index bdae961c265b..d91d04f97f4f 100644
--- a/drivers/media/video/msp3400.c
+++ b/drivers/media/video/msp3400.c
@@ -755,9 +755,7 @@ static int msp3400c_thread(void *data)
lock_kernel();
#endif
- daemonize();
- sigfillset(&current->blocked);
- strcpy(current->comm,"msp3400");
+ daemonize("msp3400");
msp->thread = current;
@@ -1011,9 +1009,7 @@ static int msp3410d_thread(void *data)
lock_kernel();
#endif
- daemonize();
- sigfillset(&current->blocked);
- strcpy(current->comm,"msp3410 [auto]");
+ daemonize("msp3410 [auto]");
msp->thread = current;
diff --git a/drivers/media/video/saa7134/saa7134-tvaudio.c b/drivers/media/video/saa7134/saa7134-tvaudio.c
index 89e53cc5ace5..11949b018afc 100644
--- a/drivers/media/video/saa7134/saa7134-tvaudio.c
+++ b/drivers/media/video/saa7134/saa7134-tvaudio.c
@@ -393,9 +393,7 @@ static int tvaudio_thread(void *data)
int i,max,carrier,audio;
lock_kernel();
- daemonize();
- sigfillset(&current->blocked);
- sprintf(current->comm, "%s", dev->name);
+ daemonize("%s", dev->name);
dev->thread.task = current;
unlock_kernel();
if (dev->thread.notify != NULL)
diff --git a/drivers/media/video/tvaudio.c b/drivers/media/video/tvaudio.c
index b46752742a60..b077e42ef792 100644
--- a/drivers/media/video/tvaudio.c
+++ b/drivers/media/video/tvaudio.c
@@ -272,9 +272,7 @@ static int chip_thread(void *data)
#ifdef CONFIG_SMP
lock_kernel();
#endif
- daemonize();
- sigfillset(&current->blocked);
- strcpy(current->comm,chip->c.name);
+ daemonize("%s", chip->c.name);
chip->thread = current;
#ifdef CONFIG_SMP
unlock_kernel();
diff --git a/drivers/message/i2o/i2o_block.c b/drivers/message/i2o/i2o_block.c
index 05406290dde8..61fe2369e8f4 100644
--- a/drivers/message/i2o/i2o_block.c
+++ b/drivers/message/i2o/i2o_block.c
@@ -629,11 +629,9 @@ static int i2ob_evt(void *dummy)
u8 data[16];
} *evt_local;
- lock_kernel();
- daemonize();
- unlock_kernel();
+ daemonize("i2oblock");
+ allow_signal(SIGKILL);
- strcpy(current->comm, "i2oblock");
evt_running = 1;
while(1)
diff --git a/drivers/message/i2o/i2o_core.c b/drivers/message/i2o/i2o_core.c
index d4f15436a380..93ce837e421c 100644
--- a/drivers/message/i2o/i2o_core.c
+++ b/drivers/message/i2o/i2o_core.c
@@ -879,11 +879,9 @@ static int i2o_core_evt(void *reply_data)
struct i2o_controller *c = NULL;
unsigned long flags;
- lock_kernel();
- daemonize();
- unlock_kernel();
+ daemonize("i2oevtd");
+ allow_signal(SIGKILL);
- strcpy(current->comm, "i2oevtd");
evt_running = 1;
while(1)
@@ -1047,15 +1045,10 @@ static int i2o_dyn_lct(void *foo)
int found = 0;
int entries;
void *tmp;
- char name[16];
- lock_kernel();
- daemonize();
- unlock_kernel();
+ daemonize("iop%d_lctd", c->unit);
+ allow_signal(SIGKILL);
- sprintf(name, "iop%d_lctd", c->unit);
- strcpy(current->comm, name);
-
c->lct_running = 1;
while(1)
diff --git a/drivers/mtd/devices/blkmtd.c b/drivers/mtd/devices/blkmtd.c
index 7d738397f667..9b2438f01e5e 100644
--- a/drivers/mtd/devices/blkmtd.c
+++ b/drivers/mtd/devices/blkmtd.c
@@ -303,12 +303,7 @@ static int write_queue_task(void *data)
DECLARE_WAITQUEUE(wait, tsk);
DEBUG(1, "blkmtd: writetask: starting (pid = %d)\n", tsk->pid);
- daemonize();
- strcpy(tsk->comm, "blkmtdd");
- spin_lock_irq(&tsk->sighand->siglock);
- sigfillset(&tsk->blocked);
- recalc_sigpending();
- spin_unlock_irq(&tsk->sighand->siglock);
+ daemonize("blkmtdd");
if(alloc_kiovec(1, &iobuf)) {
printk("blkmtd: write_queue_task cant allocate kiobuf\n");
diff --git a/drivers/mtd/mtdblock.c b/drivers/mtd/mtdblock.c
index 0aec2e6709e7..af065e4af4cf 100644
--- a/drivers/mtd/mtdblock.c
+++ b/drivers/mtd/mtdblock.c
@@ -452,12 +452,7 @@ int mtdblock_thread(void *dummy)
/* we might get involved when memory gets low, so use PF_MEMALLOC */
tsk->flags |= PF_MEMALLOC;
- strcpy(tsk->comm, "mtdblockd");
- spin_lock_irq(&tsk->sighand->siglock);
- sigfillset(&tsk->blocked);
- recalc_sigpending();
- spin_unlock_irq(&tsk->sighand->siglock);
- daemonize();
+ daemonize("mtdblockd");
while (!leaving) {
add_wait_queue(&thr_wq, &wait);
diff --git a/drivers/net/8139too.c b/drivers/net/8139too.c
index e1e8d997983e..084ff5219678 100644
--- a/drivers/net/8139too.c
+++ b/drivers/net/8139too.c
@@ -1588,14 +1588,8 @@ static int rtl8139_thread (void *data)
struct rtl8139_private *tp = dev->priv;
unsigned long timeout;
- daemonize();
- spin_lock_irq(&current->sighand->siglock);
- sigemptyset(&current->blocked);
- recalc_sigpending();
- spin_unlock_irq(&current->sighand->siglock);
-
- strncpy (current->comm, dev->name, sizeof(current->comm) - 1);
- current->comm[sizeof(current->comm) - 1] = '\0';
+ daemonize("%s", dev->name);
+ allow_signal(SIGKILL);
while (1) {
timeout = next_tick;
@@ -1604,9 +1598,7 @@ static int rtl8139_thread (void *data)
} while (!signal_pending (current) && (timeout > 0));
if (signal_pending (current)) {
- spin_lock_irq(&current->sighand->siglock);
flush_signals(current);
- spin_unlock_irq(&current->sighand->siglock);
}
if (tp->time_to_die)
diff --git a/drivers/net/irda/sir_kthread.c b/drivers/net/irda/sir_kthread.c
index 3f2a538981d9..cf292968b241 100644
--- a/drivers/net/irda/sir_kthread.c
+++ b/drivers/net/irda/sir_kthread.c
@@ -113,13 +113,7 @@ static int irda_thread(void *startup)
{
DECLARE_WAITQUEUE(wait, current);
- daemonize();
- strcpy(current->comm, "kIrDAd");
-
- spin_lock_irq(&current->sighand->siglock);
- sigfillset(&current->blocked);
- recalc_sigpending();
- spin_unlock_irq(&current->sighand->siglock);
+ daemonize("kIrDAd");
set_fs(KERNEL_DS);
diff --git a/drivers/pnp/pnpbios/core.c b/drivers/pnp/pnpbios/core.c
index d9e2092dbbb9..82944c33a021 100644
--- a/drivers/pnp/pnpbios/core.c
+++ b/drivers/pnp/pnpbios/core.c
@@ -615,8 +615,8 @@ static int pnp_dock_thread(void * unused)
{
static struct pnp_docking_station_info now;
int docked = -1, d = 0;
- daemonize();
- strcpy(current->comm, "kpnpbiosd");
+ daemonize("kpnpbiosd");
+ allow_signal(SIGKILL);
while(!unloading && !signal_pending(current))
{
int status;
diff --git a/drivers/s390/net/lcs.c b/drivers/s390/net/lcs.c
index 97e4bb6a40ff..3386baf5f604 100644
--- a/drivers/s390/net/lcs.c
+++ b/drivers/s390/net/lcs.c
@@ -908,7 +908,7 @@ lcs_fix_multicast_list(void *data)
card = (struct lcs_card *) data;
- daemonize();
+ daemonize("fixipm");
LCS_DBF_TEXT(5, trace, "fixipm");
spin_lock(&card->lock);
list_for_each_safe(l, n, &card->ipm_list) {
@@ -1370,7 +1370,7 @@ lcs_lgw_startlan_thread(void *data)
struct lcs_card *card;
card = (struct lcs_card *) data;
- daemonize();
+ daemonize("lgwstpln");
LCS_DBF_TEXT(4, trace, "lgwstpln");
if (card->dev)
netif_stop_queue(card->dev);
@@ -1397,7 +1397,7 @@ lcs_lgw_startup_thread(void *data)
struct lcs_card *card;
card = (struct lcs_card *) data;
- daemonize();
+ daemonize("lgwstpln");
LCS_DBF_TEXT(4, trace, "lgwstpln");
if (card->dev)
netif_stop_queue(card->dev);
@@ -1436,7 +1436,7 @@ lcs_lgw_stoplan_thread(void *data)
struct lcs_card *card;
card = (struct lcs_card *) data;
- daemonize();
+ daemonize("lgwstop");
LCS_DBF_TEXT(4, trace, "lgwstop");
if (card->dev)
netif_stop_queue(card->dev);
diff --git a/drivers/sbus/char/bbc_envctrl.c b/drivers/sbus/char/bbc_envctrl.c
index a5ac67cc498f..d0a545010b1e 100644
--- a/drivers/sbus/char/bbc_envctrl.c
+++ b/drivers/sbus/char/bbc_envctrl.c
@@ -457,8 +457,8 @@ static struct task_struct *kenvctrld_task;
static int kenvctrld(void *__unused)
{
- daemonize();
- strcpy(current->comm, "kenvctrld");
+ daemonize("kenvctrld");
+ allow_signal(SIGKILL);
kenvctrld_task = current;
printk(KERN_INFO "bbc_envctrl: kenvctrld starting...\n");
diff --git a/drivers/sbus/char/envctrl.c b/drivers/sbus/char/envctrl.c
index f953eaf73d32..bf97d2efafa5 100644
--- a/drivers/sbus/char/envctrl.c
+++ b/drivers/sbus/char/envctrl.c
@@ -1016,8 +1016,9 @@ static int kenvctrld(void *__unused)
poll_interval = 5 * HZ; /* TODO env_mon_interval */
- daemonize();
- strcpy(current->comm, "kenvctrld");
+ daemonize("kenvctrld");
+ allow_signal(SIGKILL);
+
kenvctrld_task = current;
printk(KERN_INFO "envctrl: %s starting...\n", current->comm);
diff --git a/drivers/scsi/aacraid/commsup.c b/drivers/scsi/aacraid/commsup.c
index 55c36b8bed90..d5e9408cebd7 100644
--- a/drivers/scsi/aacraid/commsup.c
+++ b/drivers/scsi/aacraid/commsup.c
@@ -816,8 +816,8 @@ int aac_command_thread(struct aac_dev * dev)
* Set up the name that will appear in 'ps'
* stored in task_struct.comm[16].
*/
- sprintf(current->comm, "aacraid");
- daemonize();
+ daemonize("aacraid");
+ allow_signal(SIGKILL);
/*
* Let the DPC know it has a place to send the AIF's to.
*/
diff --git a/drivers/scsi/aic7xxx/aic79xx_osm.c b/drivers/scsi/aic7xxx/aic79xx_osm.c
index a397ed69b47a..7b03b6e1f15a 100644
--- a/drivers/scsi/aic7xxx/aic79xx_osm.c
+++ b/drivers/scsi/aic7xxx/aic79xx_osm.c
@@ -2854,8 +2854,7 @@ ahd_linux_dv_thread(void *data)
* Complete thread creation.
*/
lock_kernel();
- daemonize();
- sprintf(current->comm, "ahd_dv_%d", ahd->unit);
+ daemonize("ahd_dv_%d", ahd->unit);
unlock_kernel();
while (1) {
diff --git a/drivers/scsi/aic7xxx/aic7xxx_osm.c b/drivers/scsi/aic7xxx/aic7xxx_osm.c
index a12ad53ec289..bff5a2eabb1b 100644
--- a/drivers/scsi/aic7xxx/aic7xxx_osm.c
+++ b/drivers/scsi/aic7xxx/aic7xxx_osm.c
@@ -2355,16 +2355,10 @@ ahc_linux_dv_thread(void *data)
#endif
/*
- * Don't care about any signals.
- */
- siginitsetinv(&current->blocked, 0);
-
- /*
* Complete thread creation.
*/
lock_kernel();
- daemonize();
- sprintf(current->comm, "ahc_dv_%d", ahc->unit);
+ daemonize("ahc_dv_%d", ahc->unit);
unlock_kernel();
while (1) {
diff --git a/drivers/scsi/cpqfcTSworker.c b/drivers/scsi/cpqfcTSworker.c
index 7bec5d1091f7..a45c448dc40b 100644
--- a/drivers/scsi/cpqfcTSworker.c
+++ b/drivers/scsi/cpqfcTSworker.c
@@ -165,15 +165,10 @@ void cpqfcTSWorkerThread( void *host)
ENTER("WorkerThread");
lock_kernel();
- daemonize();
+ daemonize("cpqfcTS_wt_%d", HostAdapter->host_no);
siginitsetinv(&current->blocked, SHUTDOWN_SIGS);
- /*
- * Set the name of this process.
- */
- sprintf(current->comm, "cpqfcTS_wt_%d", HostAdapter->host_no);
-
cpqfcHBAdata->fcQueReady = &fcQueReady; // primary wait point
cpqfcHBAdata->TYOBcomplete = &fcTYOBcomplete;
cpqfcHBAdata->TachFrozen = &TachFrozen;
diff --git a/drivers/scsi/scsi_error.c b/drivers/scsi/scsi_error.c
index c0bb52aaa3bd..7f8d47677aff 100644
--- a/drivers/scsi/scsi_error.c
+++ b/drivers/scsi/scsi_error.c
@@ -1579,24 +1579,14 @@ void scsi_error_handler(void *data)
int rtn;
DECLARE_MUTEX_LOCKED(sem);
- spin_lock_irq(&current->sighand->siglock);
- sigfillset(&current->blocked);
- recalc_sigpending();
- spin_unlock_irq(&current->sighand->siglock);
-
lock_kernel();
/*
* Flush resources
*/
- daemonize();
-
- /*
- * Set the name of this process.
- */
+ daemonize("scsi_eh_%d", shost->host_no);
- sprintf(current->comm, "scsi_eh_%d", shost->host_no);
current->flags |= PF_IOTHREAD;
shost->eh_wait = &sem;
diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c
index f23744d8749b..ba2713a23e24 100644
--- a/drivers/usb/core/hub.c
+++ b/drivers/usb/core/hub.c
@@ -1083,10 +1083,8 @@ static int usb_hub_thread(void *__hub)
* so get rid of all our resources
*/
- daemonize();
-
- /* Setup a nice name */
- strcpy(current->comm, "khubd");
+ daemonize("khubd");
+ allow_signal(SIGKILL);
/* Send me a signal to get me die (for debugging) */
do {
diff --git a/drivers/usb/storage/usb.c b/drivers/usb/storage/usb.c
index e4a98569d058..4c2b6de50c91 100644
--- a/drivers/usb/storage/usb.c
+++ b/drivers/usb/storage/usb.c
@@ -298,18 +298,9 @@ static int usb_stor_control_thread(void * __us)
* This thread doesn't need any user-level access,
* so get rid of all our resources..
*/
- daemonize();
+ daemonize("usb-storage");
- /* avoid getting signals */
- spin_lock_irq(&current->sighand->siglock);
- flush_signals(current);
current->flags |= PF_IOTHREAD;
- sigfillset(&current->blocked);
- recalc_sigpending();
- spin_unlock_irq(&current->sighand->siglock);
-
- /* set our name for identification purposes */
- sprintf(current->comm, "usb-storage");
unlock_kernel();