[Bridge] Source code bug or doubt - Not freeing port struct

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, 31 May 2005 10:45:28 +0200
Jorge Lanza <jlanza@xxxxxxxxxxxxxxx> wrote:

> Hi all.
> 
> During the last few days I've been going through the code in order to 
> understand how can I hack it to make the things I want to a packet on layer 2.
> First of all, congratulations. I have learnt a lot.
> 
> However I have a doubt. In n<http://lxr.linux.no/ident?i=new_nbp>ew_nbp() 
> funtion in br_if.c you make a kalloc for the port. While reading the code I 
> haven't seen any kfree for that memory, which should be done in 
> <http://lxr.linux.no/ident?i=del_nbp>del_nbp or similar functions. In 
> <http://lxr.linux.no/ident?i=destroy_nbp>destroy_nbp you set the pointer to 
> null, but I think that's not enough. I don't know if it is a bug or is sth 
> that is done somewhere else.

What kernel version?
	For 2.6
		kmalloc of port data is in br_if:new_nbp
		kfree is done by:
		del_nbp calls destroy_nbp (via rcu)
		   calls br_sysfs_freeif which does kobject_put(of port kobj)
			when ref == 0 calls brport_release (through brport_ktype)

This complexity comes because application could have /sys/class/net/ethX/brif/port_id
or other file open, in which case the bridge port can't be deleted. Until last
reference is zero.
		

[Index of Archives]     [Netdev]     [AoE Tools]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]     [Video 4 Linux]

  Powered by Linux