Skip to content

Commit e3ea1b4

Browse files
Yang YingliangDominik Brodowski
authored andcommitted
pcmcia: cs: fix possible hung task and memory leak pccardd()
If device_register() returns error in pccardd(), it leads two issues: 1. The socket_released has never been completed, it will block pcmcia_unregister_socket(), because of waiting for completion of socket_released. 2. The device name allocated by dev_set_name() is leaked. Fix this two issues by calling put_device() when device_register() fails. socket_released can be completed in pcmcia_release_socket(), the name can be freed in kobject_cleanup(). Fixes: 1da177e ("Linux-2.6.12-rc2") Signed-off-by: Yang Yingliang <[email protected]> Signed-off-by: Dominik Brodowski <[email protected]>
1 parent 2dde18c commit e3ea1b4

File tree

1 file changed

+1
-0
lines changed

1 file changed

+1
-0
lines changed

drivers/pcmcia/cs.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -605,6 +605,7 @@ static int pccardd(void *__skt)
605605
dev_warn(&skt->dev, "PCMCIA: unable to register socket\n");
606606
skt->thread = NULL;
607607
complete(&skt->thread_done);
608+
put_device(&skt->dev);
608609
return 0;
609610
}
610611
ret = pccard_sysfs_add_socket(&skt->dev);

0 commit comments

Comments
 (0)