Re: [PATCH v3] initramfs: finish fput() before accessing any binary from initramfs

From: Tero Kristo
Date: Fri Feb 03 2017 - 12:19:46 EST


On 02/02/17 00:12, Andrew Morton wrote:
On Wed, 1 Feb 2017 19:35:40 +0530 Lokesh Vutla <lokeshvutla@xxxxxx> wrote:

commit 4a9d4b024a31 ("switch fput to task_work_add") implements a
schedule_work() for completing fput(), but did not guarantee calling
__fput() after unpacking initramfs. Because of this, there is a
possibility that during boot a driver can see ETXTBSY when it tries
to load a binary from initramfs as fput() is still pending on that
binary. This patch makes sure that fput() is completed after unpacking
initramfs and removes the call to flush_delayed_fput() in kernel_init()
which happens very late after unpacking initramfs.

There's not really enough info here for others to be able to decide
which kernel versions need the fix. How serious is the bug? Given
that it's been there for 4 years, I assume "not very"?

I think the issue only surfaces with certain timing conditions, and for some reason it has been masked for at least us until we noticed this with 4.9-lts kernel. The same issue was not detected with earlier 4.4-lts kernel.

-Tero