Today I've tried the same thing (unload module "snd") on 2.5.69 without any problem...
so there is something wrong in patch-2.5.70.
Using some "printk" I found this:
sound/core/sound.c
static void __exit alsa_sound_exit(void)
{
...
if (unregister_chrdev(major, "alsa") != 0) <-- kernel freeze!
snd_printk(KERN_ERR "unable to unregister major device number %d\n", major);
...
}
SO I think that the problem is in last changes to "fs/char_dev.c"...
Viro, according to the changelog it seems that these changes are yours...
<viro@www.linux.org.uk>
[PATCH] cdev-cidr, part 1
New object: struct cdev. It contains a kobject, a pointer to
file_operations and a pointer to owner module. These guys have a search
structure of the same sort as gendisks and chrdev_open() picks
file_operations from them.
Intended use: embed such animal in driver-owned structure (e.g.
tty_driver) and register it as associated with given range of device
numbers. Generic code will do lookup for such object and use it for the
rest.
The behaviour of register_chrdev() is _not_ changed - it allocates
struct cdev and registers it; any old driver will work as if nothing had
changed.
...
Viro, what do you think?
BYE,
Paolo
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/