Re: PowerPC: Random memory corruption causing kernel oops on Power11

From: David Laight

Date: Fri May 29 2026 - 12:42:36 EST


On Fri, 29 May 2026 19:07:22 +0530
Venkat Rao Bagalkote <venkat88@xxxxxxxxxxxxx> wrote:

> On 29/05/26 12:20 pm, Venkat Rao Bagalkote wrote:
> > Greetings!!!
> >
> > Kernel 7.1.0-rc5-next-20260528 crashes randomly on IBM Power11
> > hardware. Attached is the config file.
> >
.
>
> Git bisect is pointing to 54067bacb49c selinux: hooks: use __getname()
> to allocate path buffer as the first bad commit.
>
>
> # git bisect good
> 54067bacb49caeada82b20b6bd706dca0cb99ffc is the first bad commit
> commit 54067bacb49caeada82b20b6bd706dca0cb99ffc
> Author: Mike Rapoport (Microsoft) <rppt@xxxxxxxxxx>
> Date:   Wed May 20 11:18:56 2026 +0300
>
>     selinux: hooks: use __getname() to allocate path buffer
>
>     selinux_genfs_get_sid() allocates memory for a path with
> __get_free_page()
>     although there is a dedicated helper for allocation of file paths:
>     __getname().
>
>     Replace __get_free_page() for allocation of a path buffer with
> __getname().
>
>     Signed-off-by: Mike Rapoport (Microsoft) <rppt@xxxxxxxxxx>
>     Signed-off-by: Paul Moore <paul@xxxxxxxxxxxxxx>
>
>  security/selinux/hooks.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)

__getname() is kmalloc(PATH_MAX) aka kmalloc(4096).

The old code was:
buffer = (char *)__get_free_page(GFP_KERNEL);
if (!buffer)
return -ENOMEM;

path = dentry_path_raw(dentry, buffer, PAGE_SIZE);
only the allocate was changed.

PAGE_SIZE is not the length of the buffer.
Should be PATH_MAX.

-- David