[PATCH v9 00/11] landlock: truncate support

Günther Noack gnoack3000 at gmail.com
Sun Oct 16 18:11:31 UTC 2022


On Thu, Oct 13, 2022 at 09:35:24AM -0700, Nathan Chancellor wrote:
> Hi Mickaël and Günther,
> 
> On Mon, Oct 10, 2022 at 12:35:31PM +0200, Mickaël Salaün wrote:
> > Thanks Günther! This series looks good and is now in -next with some minor
> > cosmetic comment changes.
> > 
> > Nathan, could you please confirm that this series work for you?
> 
> First of all, let me apologize for the delay in response. I am just now
> getting back online after a week long vacation, which was definitely
> poorly timed with the merge window :/
> 
> Unfortunately, with this series applied on top of commit e8bc52cb8df8
> ("Merge tag 'driver-core-6.1-rc1' of
> git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core") as
> indicated by the base commit information at the bottom of the cover
> letter, I can still reproduce the original crash I reported. What is
> even more odd is that I should be using the exact same tool versions
> that Günther is, as I am also using Arch Linux as my distribution.
> 
> I have attached the exact .config that the build system produced after
> my build, just in case there is something else in our environment that
> could be causing difficulties in reproducing.
> 
> For what it is worth, I can reproduce this in a fresh Arch Linux
> container, which should hopefully remove most environment concerns.
> 
> $ podman run \
>     --interactive \
>     --tty \
>     --rm
>     --volume .../linux-next:/linux-next \
>     --workdir /linux-next \
>     docker.io/archlinux:base-devel
> # pacman -Syyu --noconfirm \
>     aarch64-linux-gnu-gcc \
>     bc \
>     git \
>     pahole \
>     python3 \
>     qemu-system-aarch64
> ...
> 
> # aarch64-linux-gnu-gcc --version | head -1
> aarch64-linux-gnu-gcc (GCC) 12.2.0
> 
> # aarch64-linux-gnu-as --version | head -1
> GNU assembler (GNU Binutils) 2.39
> 
> # qemu-system-aarch64 --version | head -1
> QEMU emulator version 7.1.0
> 
> # git log --first-parent --oneline e8bc52cb8df8^..
> 5622ae16a601 landlock: Document Landlock's file truncation support
> 6c8a1dadeae1 samples/landlock: Extend sample tool to support LANDLOCK_ACCESS_FS_TRUNCATE
> d19c9ba61c75 selftests/landlock: Test ftruncate on FDs created by memfd_create(2)
> bf5e5018edb5 selftests/landlock: Test FD passing from restricted to unrestricted processes
> 4a7f660a22b2 selftests/landlock: Locally define __maybe_unused
> 1a9015ef7014 selftests/landlock: Test open() and ftruncate() in multiple scenarios
> 79bb219d0b7c selftests/landlock: Test file truncation support
> dd3d0e23543e landlock: Support file truncation
> dcade986e070 landlock: Document init_layer_masks() helper
> 873afb813b11 landlock: Refactor check_access_path_dual() into is_access_to_paths_allowed()
> cdda4d440c96 security: Create file_truncate hook from path_truncate hook
> e8bc52cb8df8 Merge tag 'driver-core-6.1-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core
> 
> # mkdir build
> 
> # mv .config build
> 
> # mv rootfs.cpio build
> 
> # make -skj"$(nproc)" ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- O=build Image.gz
> 
> # qemu-system-aarch64 \
>     -machine virt,gic-version=max,virtualization=true \
>     -cpu max,pauth-impdef=true \
>     -kernel build/arch/arm64/boot/Image.gz \
>     -append "console=ttyAMA0 earlycon" \
>     -display none \
>     -initrd build/rootfs.cpio \
>     -m 512m \
>     -nodefaults \
>     -no-reboot \
>     -serial mon:stdio
> ...
> [    0.000000] Linux version 6.0.0-08005-g5622ae16a601 (root at 82bc572c5e5f) (aarch64-linux-gnu-gcc (GCC) 12.2.0, GNU ld (GNU Binutils) 2.39) #1 SMP Thu Oct 13 16:30:30 UTC 2022
> ...
> [    0.491767] Trying to unpack rootfs image as initramfs...
> [    0.494156] Unable to handle kernel paging request at virtual address ffff00000851036a
> [    0.494389] Mem abort info:
> [    0.494466]   ESR = 0x0000000097c0c061
> [    0.494601]   EC = 0x25: DABT (current EL), IL = 32 bits
> [    0.494756]   SET = 0, FnV = 0
> [    0.494957]   EA = 0, S1PTW = 0
> [    0.495070]   FSC = 0x21: alignment fault
> [    0.495214] Data abort info:
> [    0.495298]   Access size = 8 byte(s)
> [    0.495408]   SSE = 0, SRT = 0
> [    0.495519]   SF = 1, AR = 1
> [    0.495636]   CM = 0, WnR = 1
> [    0.495759] swapper pgtable: 4k pages, 48-bit VAs, pgdp=0000000041645000
> [    0.495938] [ffff00000851036a] pgd=180000005fff8003, p4d=180000005fff8003, pud=180000005fff7003, pmd=180000005ffbd003, pte=0068000048510f07
> [    0.496779] Internal error: Oops: 0000000097c0c061 [#1] SMP
> [    0.497081] Modules linked in:
> [    0.497341] CPU: 0 PID: 9 Comm: kworker/u2:0 Not tainted 6.0.0-08005-g5622ae16a601 #1
> [    0.497643] Hardware name: linux,dummy-virt (DT)
> [    0.497987] Workqueue: events_unbound async_run_entry_fn
> [    0.498635] pstate: 60400009 (nZCv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
> [    0.498882] pc : apparmor_file_alloc_security+0x98/0x210
> [    0.499132] lr : apparmor_file_alloc_security+0x48/0x210
> [    0.499297] sp : ffff800008093960
> [    0.499403] x29: ffff800008093960 x28: ffff800008093b30 x27: ffff000002201500
> [    0.499679] x26: ffffa4c2a0e55de0 x25: ffff00000201cd05 x24: ffffa4c2a1cd0068
> [    0.499901] x23: ffff000008510362 x22: ffff000008510360 x21: 0000000000000002
> [    0.500153] x20: ffffa4c2a0f72000 x19: ffff00000201b2b0 x18: ffffffffffffffff
> [    0.500375] x17: 000000000000003f x16: ffffa4c2a15d5008 x15: 0000000000000000
> [    0.500606] x14: 0000000000000001 x13: 0000000000002578 x12: ffff00001fef1eb8
> [    0.500830] x11: ffffa4c2a15ec860 x10: 0000000000000007 x9 : ffffa4c2a0bce9ec
> [    0.501061] x8 : ffff000008510380 x7 : 0000000000000000 x6 : 0000000000001e23
> [    0.501284] x5 : ffff000008510360 x4 : ffff800008093990 x3 : ffff000002017d80
> [    0.501500] x2 : 0000000000000001 x1 : ffff00000851036a x0 : ffff00000201b2b0
> [    0.501800] Call trace:
> [    0.501957]  apparmor_file_alloc_security+0x98/0x210
> [    0.502241]  security_file_alloc+0x6c/0xf0
> [    0.502401]  __alloc_file+0x5c/0x100
> [    0.502520]  alloc_empty_file+0x68/0x110
> [    0.502630]  path_openat+0x50/0x1090
> [    0.502743]  do_filp_open+0x88/0x13c
> [    0.502858]  filp_open+0x110/0x1b0
> [    0.502961]  do_name+0xbc/0x230
> [    0.503105]  write_buffer+0x40/0x60
> [    0.503234]  unpack_to_rootfs+0x100/0x2bc
> [    0.503375]  do_populate_rootfs+0x70/0x134
> [    0.503516]  async_run_entry_fn+0x40/0x1e0
> [    0.503653]  process_one_work+0x1f4/0x460
> [    0.503783]  worker_thread+0x188/0x4e0
> [    0.503902]  kthread+0xe0/0xe4
> [    0.503999]  ret_from_fork+0x10/0x20
> [    0.504279] Code: 52800002 d2800000 d2800013 910022e1 (c89ffc20)
> [    0.504647] ---[ end trace 0000000000000000 ]---
> ...
> 
> I am not sure what else I can provide in order to reproduce this but I
> am happy to do whatever is needed to get to the bottom of this.

Thank you Nathan! I am able to reproduce this now with the .config you
provided and will have a look.

—Günther

-- 



More information about the Linux-security-module-archive mailing list