Test with focal-proposed (5.4.0-90.101)
---

Original:

# ../openat
Killed

[  286.989830] BUG: kernel NULL pointer dereference, address: 0000000000000010
...
[  286.996507] CPU: 2 PID: 5529 Comm: openat Not tainted 5.4.0-90-generic 
#101-Ubuntu
[  286.997358] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 
1.13.0-1ubuntu1.1 04/01/2014
[  286.998397] RIP: 0010:d_namespace_path.constprop.0+0x48/0x300
...
[  287.008418] Call Trace:
[  287.016112]  aa_path_name+0x42/0xb0
[  287.016616]  path_name.isra.0+0x5f/0xe0
[  287.017153]  profile_path_perm.part.0+0x58/0xa0
[  287.017768]  aa_path_perm+0xdd/0x130
[  287.018293]  common_perm+0x96/0x110
[  287.018795]  common_perm_cond+0x4c/0x70
[  287.019353]  apparmor_inode_getattr+0x1d/0x20
[  287.019948]  security_inode_getattr+0x35/0x50
[  287.020542]  vfs_getattr+0x22/0x50
[  287.021042]  vfsub_update_h_iattr+0x95/0xb0 [aufs]
[  287.021687]  ? lookup_dcache+0x46/0x70
[  287.022216]  ? lookup_one_len+0x68/0x90
[  287.022755]  vfsub_lookup_one_len+0x61/0x70 [aufs]
[  287.023413]  au_wh_test+0x26/0xa0 [aufs]
[  287.023978]  au_lkup_dentry+0x1ba/0x670 [aufs]
[  287.024598]  aufs_lookup.part.0+0x119/0x200 [aufs]
[  287.025250]  aufs_atomic_open+0x19d/0x400 [aufs]
[  287.025881]  ? aufs_permission+0x1a9/0x2f0 [aufs]
[  287.026536]  ? security_path_mknod+0x4c/0x70
[  287.027130]  lookup_open+0x364/0x6e0
[  287.027658]  do_last+0x2cb/0x900
[  287.028141]  ? __alloc_file+0x94/0x110
[  287.028678]  path_openat+0x8d/0x290
[  287.029184]  ? do_async_page_fault+0x39/0x70
[  287.029773]  do_filp_open+0x91/0x100
[  287.030292]  ? strncpy_from_user+0xbd/0x150
[  287.030879]  ? __alloc_fd+0xb8/0x150
[  287.031402]  do_sys_open+0x17e/0x290
[  287.031920]  __x64_sys_openat+0x20/0x30
[  287.032469]  do_syscall_64+0x57/0x190
[  287.032997]  entry_SYSCALL_64_after_hwframe+0x44/0xa9
[  287.033682] RIP: 0033:0x7f299dccf026


Patched:

# ../openat
# echo $?
0

# uname -rv
5.4.0-90-generic #101+test20211022b2 SMP Fri Oct 22 10:34:51 -03 2021

-- 
You received this bug notification because you are a member of Kernel
Packages, which is subscribed to linux in Ubuntu.
https://bugs.launchpad.net/bugs/1948470

Title:
  aufs: kernel bug with apparmor and fuseblk

Status in linux package in Ubuntu:
  Invalid
Status in linux source package in Bionic:
  In Progress
Status in linux source package in Focal:
  In Progress
Status in linux source package in Hirsute:
  In Progress
Status in linux source package in Impish:
  Invalid
Status in linux source package in Jammy:
  Invalid

Bug description:
  [Impact]

   * AppArmor-enabled applications on the aufs filesystem
     might hit a kernel bug when getting file attributes.

   * The aufs filesystem explicitly assigns a NULL pointer
     to `struct path.mnt` for `vfs_getattr()`, which calls
     into AppArmor that checks `struct path.mnt->mnt_flags`,
     triggering a kernel NULL pointer dereference.

   * This is almost 10 years old [1,2], reproducible w/ the
     Linux v3.2 kernel, but it's rare as apparently it needs
     a fuseblk mount as an aufs branch, and file creation/
     open (O_CREAT), with a filename that exists only in a
     lower aufs branch. On Linux v5.15-rc* it doesn't need
     AppArmor anymore.

  [Fix]

   * The patch fixing this issue does set `struct path.mnt`
     properly, by taking `struct path` as parameter instead
     of just `struct dentry` (and making up an incomplete
     `struct path` w/ that `dentry` and `mnt = NULL`.)

   * Since it changes the signature of a key, leaf function
     with several callers, the patch is a bit long/refactor,
     but it has been tested by the upstream aufs maintainer
     with a private test-suite.

  [Test Plan]

   * Synthetic reproducer available in [1] and comment #1.

  [Regression Potential]

   * Regressions would probably manifest as kernel errors
     mostly in the lookup and open paths, but more subtle
     manifestations would be possible as well.

   * The patch modifies a fair number of functions, even if
     doing so in simple ways. The synthetic reproducer only
     covers one of those functions.

   * The other code paths have been tested by the maintainer
     w/ the mainline kernel, and should be equivalent to our
     kernel as none of such changed for cherry-pick/backport.

   * The upstream aufs maintainer runs a private test suite
     that covers several features and use cases of aufs, so
     hopefully that provides some relief to take this patch.

  [Other Info]

   * Impish no longer ships aufs; no fix needed.
   * Hirsute/Focal/Bionic do/need it. (H only for backports)
   * Hirsute/Focal are clean cherry-picks.
   * Bionic is a trivial backport.

  [1] https://sourceforge.net/p/aufs/mailman/message/37363599/
  [2] 
https://unix.stackexchange.com/questions/324571/docker-run-causing-kernel-panic

  [Kernel Traces]

  BUG: kernel NULL pointer dereference, address: 0000000000000010
  ...
  CPU: 23 PID: 17623 Comm: drone-agent Not tainted 5.4.0-1058-azure 
#60~18.04.1-Ubuntu
  Hardware name: Microsoft Corporation Virtual Machine/Virtual Machine, BIOS 
090008 12/07/2018
  RIP: 0010:aa_path_name+0x55/0x370
  ...
  Call Trace:
  ? request_wait_answer+0xc4/0x200
  path_name+0x60/0xe0
  profile_path_perm.part.9+0x57/0xa0
  aa_path_perm+0xe2/0x130
  common_perm+0x59/0x130
  common_perm_cond+0x4c/0x70
  apparmor_inode_getattr+0x1d/0x20
  security_inode_getattr+0x35/0x50
  vfs_getattr+0x21/0x40
  vfsub_update_h_iattr+0x95/0xb0 [aufs]
  ? lookup_dcache+0x44/0x70
  ? lookup_one_len+0x66/0x90
  vfsub_lookup_one_len+0x50/0x70 [aufs]
  au_sio_lkup_one+0x8e/0xa0 [aufs]
  au_lkup_dentry+0x3fa/0x660 [aufs]
  aufs_lookup.part.35+0x11c/0x210 [aufs]
  aufs_atomic_open+0xec/0x3c0 [aufs]
  path_openat+0xe30/0x16a0
  ? aufs_lookup+0x30/0x30 [aufs]
  ? path_openat+0xe30/0x16a0
  ? unlock_page_memcg+0x12/0x20
  ? filemap_map_pages+0x17d/0x3b0
  do_filp_open+0x9b/0x110
  ? __check_object_size+0xdb/0x1b0
  ? __alloc_fd+0xb2/0x170
  do_sys_open+0x1ba/0x2e0
  ? do_sys_open+0x1ba/0x2e0
  __x64_sys_openat+0x20/0x30
  do_syscall_64+0x5e/0x200
  entry_SYSCALL_64_after_hwframe+0x44/0xa9
  RIP: 0033:0x4a06fa

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1948470/+subscriptions


-- 
Mailing list: https://launchpad.net/~kernel-packages
Post to     : kernel-packages@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kernel-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to