On Mon, Jan 11, 2021 at 11:55 PM KP Singh <kpsingh@xxxxxxxxxx> wrote: > > It was found in [1] that bpf_inode_storage_get helper did not check > the nullness of the passed owner ptr which caused an oops when > dereferenced. This change incorporates the example suggested in [1] into > the local storage selftest. > > The test is updated to create a temporary directory instead of just > using a tempfile. In order to replicate the issue this copied rm binary > is renamed tiggering the inode_rename with a null pointer for the > new_inode. The logic to verify the setting and deletion of the inode > local storage of the old inode is also moved to this LSM hook. > > The change also removes the copy_rm function and simply shells out > to copy files and recursively delete directories and consolidates the > logic of setting the initial inode storage to the bprm_committed_creds > hook and removes the file_open hook. > > [1]: https://lore.kernel.org/bpf/CANaYP3HWkH91SN=wTNO9FL_2ztHfqcXKX38SSE-JJ2voh+vssw@xxxxxxxxxxxxxx > > Suggested-by: Gilad Reti <gilad.reti@xxxxxxxxx> > Acked-by: Yonghong Song <yhs@xxxxxx> > Signed-off-by: KP Singh <kpsingh@xxxxxxxxxx> > --- Hi KP, I'm getting a compilation warning when building selftests. Can you please take a look and send a fix? Thanks! /data/users/andriin/linux/tools/testing/selftests/bpf/prog_tests/test_local_storage.c: In function ‘test_test_local_storage’: /data/users/andriin/linux/tools/testing/selftests/bpf/prog_tests/test_local_storage.c:143:52: warning: ‘/copy_of_rm’ directive output may be truncated writing 11 bytes into a region of size between 1 and 64 [-Wformat-truncation=] 143 | snprintf(tmp_exec_path, sizeof(tmp_exec_path), "%s/copy_of_rm", | ^~~~~~~~~~~ /data/users/andriin/linux/tools/testing/selftests/bpf/prog_tests/test_local_storage.c:143:2: note: ‘snprintf’ output between 12 and 75 bytes into a destination of size 64 143 | snprintf(tmp_exec_path, sizeof(tmp_exec_path), "%s/copy_of_rm", | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 144 | tmp_dir_path); | ~~~~~~~~~~~~~ > .../bpf/prog_tests/test_local_storage.c | 96 +++++-------------- > .../selftests/bpf/progs/local_storage.c | 62 ++++++------ > 2 files changed, 61 insertions(+), 97 deletions(-) > [...]