Re: [PATCH] staging: rtl8192u: cleanup proc fs entries upon exit

From: Dan Carpenter
Date: Mon Feb 21 2022 - 08:06:31 EST


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