Re: [PATCH] bcache: avoid a dangerous addressing in closure_queue

From: Christoph Hellwig
Date: Wed Jul 05 2017 - 15:31:53 EST


On Wed, Jul 05, 2017 at 08:53:19PM +0800, Liang Chen wrote:
> The use of the union reduces the size of closure struct by taking advantage
> of the current size of its members. The offset of func in work_struct equals
> the size of the first three members, so that work.work_func will just
> reference the forth member - the pointer to closure_fn.
>
> This is smart but dangerous. It can be broken if work_struct or the other
> ones get changed, and can be a bit difficult to debug.

Please, don't ever cast function pointers, as that's extremely
dangerous.