We just made bdevname() irq-safe. This patch makes cdevname() callable from interrupts as well. fs/char_dev.c | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-) diff -puN fs/char_dev.c~cdevname-irq-safety-fix fs/char_dev.c --- 25/fs/char_dev.c~cdevname-irq-safety-fix 2003-03-23 00:49:13.000000000 -0800 +++ 25-akpm/fs/char_dev.c 2003-03-23 00:49:45.000000000 -0800 @@ -150,7 +150,7 @@ int register_chrdev_region(unsigned int i = major_to_index(major); - write_lock(&chrdevs_lock); + write_lock_irq(&chrdevs_lock); for (cp = &chrdevs[i]; *cp; cp = &(*cp)->next) if ((*cp)->major > major || ((*cp)->major == major && (*cp)->baseminor >= baseminor)) @@ -162,7 +162,7 @@ int register_chrdev_region(unsigned int cd->next = *cp; *cp = cd; } - write_unlock(&chrdevs_lock); + write_unlock_irq(&chrdevs_lock); return ret; } @@ -182,7 +182,7 @@ int unregister_chrdev(unsigned int major i = major_to_index(major); - write_lock(&chrdevs_lock); + write_lock_irq(&chrdevs_lock); for (cp = &chrdevs[i]; *cp; cp = &(*cp)->next) if ((*cp)->major == major) break; @@ -193,7 +193,7 @@ int unregister_chrdev(unsigned int major *cp = cd->next; kfree(cd); } - write_unlock(&chrdevs_lock); + write_unlock_irq(&chrdevs_lock); return ret; } _