Re: [PATCH] fs/exec.c: Avoid a race in formats

From: Al Viro
Date: Wed Feb 23 2022 - 18:24:15 EST


On Thu, Feb 24, 2022 at 08:17:52AM +0900, Levi Yun wrote:
> Suppose a module registers its own binfmt (custom) and formats is like:
>
> +---------+ +----------+ +---------+
> | custom | -> | format1 | -> | format2 |
> +---------+ +----------+ +---------+
>
> and try to call unregister_binfmt with custom NOT in __exit stage.

Explain, please. Why would anyone do that? And how would such
module decide when it's safe to e.g. dismantle data structures
used by methods of that binfmt, etc.?

Could you give more detailed example? Because it looks like
papering over an inherently unsafe use of binfmt interfaces...