On Mon, Feb 21, 2022 at 04:00:06PM +0300, Dan Carpenter wrote: > On Sun, Feb 20, 2022 at 03:15:53PM -0800, Tong Zhang wrote: > > proc fs entries need to be removed when module is removed, otherwise > > when we try to insert the module again, kernel will complain > > > > [ 493.068012] proc_dir_entry 'net/ieee80211' already registered > > [ 493.271973] proc_mkdir+0x18/0x20 > > [ 493.272136] ieee80211_debug_init+0x28/0xde8 [r8192u_usb] > > [ 493.272404] rtl8192_usb_module_init+0x10/0x161 [r8192u_usb] > > > > [ 13.910616] proc_dir_entry 'net/rtl819xU' already registered > > [ 13.918931] proc_mkdir+0x18/0x20 > > [ 13.919098] rtl8192_usb_module_init+0x142/0x16d [r8192u_usb] > > > > Signed-off-by: Tong Zhang <ztong0001@xxxxxxxxx> > > --- > > This is a partial fix but there is a lot wrong with both the init() and > exit() function. It's not hard to just fix everything and it saves > time. > > Here is how to write Free the Last thing style error handling for init() > and when you finish writing the error handling code then the exit() > function is just a matter of cut and paste. > > The rules are: 1) Free the last successful allocation. 2) Every > function must have a matching release function. 3) Every function must > clean up after itself. No partial allocations. 4) Name your labels > with descriptive names to say what the goto does. I meant to add: 5) Free things in reverse order from how they were allocated. regards, dan carpenter