On Mon, Mar 12, 2007 at 09:55:14PM -0400, Mark Lord wrote:
So where does the memory get freed -- the structure pointed at
by the serial->port[i] thingie ? It's not a leak, is it?
It gets free'd through device_unregister
for (i = 0; i < num_ports; ++i) {
...
port->dev.release = &port_release;
...
retval = device_register(&port->dev);
which means that until all the drivers get converted to use
->port_probe() and ->port_remove() (which gets called by
device_unregister) and stop using the ->port[] array in ->shutdown()
we need to have ->shutdown() called before device_unregister.
Look at changeset d9a7ecacac5f8274d2afce09aadcf37bdb42b93a in Linus's
tree from Jim Radford:
http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=d9a7ecacac5f8274d2afce09aadcf37bdb42b93a
So, this patch should be reverted for now.