Re: [PATCH] (re)register_binfmt returns with -EBUSY

From: Andrew Morton
Date: Mon Apr 02 2007 - 20:40:51 EST


On Mon, 2 Apr 2007 18:24:15 +0530
"kalash nainwal" <kalash.nainwal@xxxxxxxxx> wrote:

> When a binary format is unregistered and re-registered,
> register_binfmt fails with -EBUSY. The reason is that
> unregister_binfmt does not set fmt->next to NULL, and seeing
> (fmt->next != NULL), register_binfmt fails with -EBUSY.
>
> One can find his way around by explicitly setting fmt->next to NULL
> after unregistering, but that is kind of unclean (one should better be
> using only the interfaces, and not the interal members, isn't it?)
>
> Attached one-liner can fix it (for 2.6.20).

Yes, that'll fix it.

But I wonder why register_binfmt() even checks that the to-be-registered
linux_binfmt has a non-null fmt->next? Presumably that's there to catch
erroneous re-registration of an already-registered format.

All very odd. It looks like that code should be converted to list_heads
anyway...
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/