2021-12-06 16:06:32

by Lukas Bulwahn

[permalink] [raw]
Subject: Unused local variable load_addr in load_elf_binary()

Dear Akira-san,

With commit 0c9333606e30 ("fs/binfmt_elf: Fix AT_PHDR for unusual ELF
files"), you have changed load_elf_binary() in ./fs/binfmt_elf.c in a
way such that the local variable load_addr in load_elf_binary() is not
used anymore.

I had a quick look at the code and I think the following refactoring
would be good:

1. Remove the definition of load_addr and its unneeded computation of load_addr

2. Rename load_addr_set to first (or a similar name) to represent that
this variable is not linked to the non-existing load_addr, but states
that it captures the first iteration of the loop. Note that first has
the inverse meaning of load_addr_set.

The issue was reported by make clang-analyzer:

./fs/binfmt_elf.c:1167:5: warning: Value stored to 'load_addr' is
never read [clang-analyzer-deadcode.DeadStores]
load_addr += load_bias;
^ ~~~~~~~~~


Best regards,

Lukas


2021-12-07 00:01:58

by Akira Kawata

[permalink] [raw]
Subject: Re: Unused local variable load_addr in load_elf_binary()

On Mon, Dec 06, 2021 at 04:46:01PM +0100, Lukas Bulwahn wrote:
> Dear Akira-san,
>
> With commit 0c9333606e30 ("fs/binfmt_elf: Fix AT_PHDR for unusual ELF
> files"), you have changed load_elf_binary() in ./fs/binfmt_elf.c in a
> way such that the local variable load_addr in load_elf_binary() is not
> used anymore.
>
> I had a quick look at the code and I think the following refactoring
> would be good:
>
> 1. Remove the definition of load_addr and its unneeded computation of load_addr
>
> 2. Rename load_addr_set to first (or a similar name) to represent that
> this variable is not linked to the non-existing load_addr, but states
> that it captures the first iteration of the loop. Note that first has
> the inverse meaning of load_addr_set.
>
> The issue was reported by make clang-analyzer:
>
> ./fs/binfmt_elf.c:1167:5: warning: Value stored to 'load_addr' is
> never read [clang-analyzer-deadcode.DeadStores]
> load_addr += load_bias;
> ^ ~~~~~~~~~
>
>
> Best regards,
>
> Lukas

Thank you for your comments. Should I send a new patch, or change
the existing patch in linux-next?

Akira

2021-12-07 02:05:00

by Kees Cook

[permalink] [raw]
Subject: Re: Unused local variable load_addr in load_elf_binary()

On Mon, Dec 06, 2021 at 04:46:01PM +0100, Lukas Bulwahn wrote:
> Dear Akira-san,
>
> With commit 0c9333606e30 ("fs/binfmt_elf: Fix AT_PHDR for unusual ELF
> files"), you have changed load_elf_binary() in ./fs/binfmt_elf.c in a
> way such that the local variable load_addr in load_elf_binary() is not
> used anymore.

EEk! yeah, this totally broke ELF randomization. this needs to be
entirely reverted.

--
Kees Cook

2021-12-07 03:23:52

by Akira Kawata

[permalink] [raw]
Subject: Re: Unused local variable load_addr in load_elf_binary()

On Mon, Dec 06, 2021 at 06:04:56PM -0800, Kees Cook wrote:
> On Mon, Dec 06, 2021 at 04:46:01PM +0100, Lukas Bulwahn wrote:
> > Dear Akira-san,
> >
> > With commit 0c9333606e30 ("fs/binfmt_elf: Fix AT_PHDR for unusual ELF
> > files"), you have changed load_elf_binary() in ./fs/binfmt_elf.c in a
> > way such that the local variable load_addr in load_elf_binary() is not
> > used anymore.
>
> EEk! yeah, this totally broke ELF randomization. this needs to be
> entirely reverted.
>
> --
> Kees Cook

I think my patch doesn't affect on ELF randomization because it keeps
the way of load_addr calculation.


Akira Kawata