fanotify10 in ubuntu_ltp_syscalls failed

Bug #1802454 reported by Po-Hsu Lin on 2018-11-09
8
This bug affects 1 person
Affects Status Importance Assigned to Milestone
ubuntu-kernel-tests
Undecided
Po-Hsu Lin
linux (Ubuntu)
Undecided
Po-Hsu Lin
Trusty
Undecided
Unassigned
Xenial
Undecided
Unassigned
Bionic
Undecided
Unassigned
Cosmic
Undecided
Unassigned

Bug Description

== Justification ==
Commit 92183a42898d ("fsnotify: fix ignore mask logic in
send_to_group()") acknowledges the use case of ignoring an event on
an inode mark, because of an ignore mask on a mount mark of the same
group (i.e. I want to get all events on this file, except for the events
that came from that mount).

This change depends on correctly merging the inode marks and mount marks
group lists, so that the mount mark ignore mask would be tested in
send_to_group(). Alas, the merging of the lists did not take into
account the case where event in question is not in the mask of any of
the mount marks.

To fix this, completely remove the tests for inode and mount event masks
from the lists merging code.

== Fix ==
9bdda4e9 (fsnotify: fix ignore mask logic in fsnotify())

Test kernels for Bionic can be found here:
http://people.canonical.com/~phlin/kernel/lp-1802454-fanotify10/bionic/

It seems that T/X poses with the same issue and we might be able to backport
it with the same logic, but I think we should target Bionic as it's a fix for
for 92183a42898d which was only applied to Bionic.

== Regression Potential ==
Low.

The backport work is required as it's missing commit 47d9c7cc457 in Bionic,
which generalizes the iteration of marks for inode_mark and vfsmount_mark, from:
    iter_info.inode_mark
to:
    iter_info.marks[FSNOTIFY_OBJ_TYPE_INODE]

But the patch can still be backported with the same logic without this commit.

The test with the syscalls test in LTP test suite shows no sign of regression.

== Test Case ==
Run the fanotify10 test in ubuntu_ltp_syscalls test suite. And it will pass
with the patched kernel.

Full LTP syscalls test with 4.15.0-42 in -proposed:
http://paste.ubuntu.com/p/Wm8nQ932g6/

Full LTP syscalls test with patched 4.15.0-42:
http://paste.ubuntu.com/p/nv4jW6shpJ/

-----

This is a new test case that landed 7 days ago.

<<<test_start>>>
tag=fanotify10 stime=1541744937
cmdline="fanotify10"
contacts=""
analysis=exit
<<<test_output>>>
incrementing stop
tst_device.c:230: INFO: Using test device LTP_DEV='/dev/loop1'
tst_mkfs.c:90: INFO: Formatting /dev/loop1 with ext2 opts='' extra opts=''
mke2fs 1.44.1 (24-Mar-2018)
tst_test.c:1085: INFO: Timeout per run is 0h 05m 00s
fanotify10.c:199: INFO: Test #0: ignore mount events created on a specific file
fanotify10.c:187: PASS: group 0 got event: mask 20 pid=2840 fd=15
fanotify10.c:187: PASS: group 1 got event: mask 20 pid=2840 fd=15
fanotify10.c:187: PASS: group 2 got event: mask 20 pid=2840 fd=15
fanotify10.c:264: PASS: group 0 (prio 1) with FAN_MARK_MOUNT and FAN_MARK_INODE ignore mask got no event
fanotify10.c:264: PASS: group 1 (prio 1) with FAN_MARK_MOUNT and FAN_MARK_INODE ignore mask got no event
fanotify10.c:264: PASS: group 2 (prio 1) with FAN_MARK_MOUNT and FAN_MARK_INODE ignore mask got no event
fanotify10.c:264: PASS: group 0 (prio 2) with FAN_MARK_MOUNT and FAN_MARK_INODE ignore mask got no event
fanotify10.c:264: PASS: group 1 (prio 2) with FAN_MARK_MOUNT and FAN_MARK_INODE ignore mask got no event
fanotify10.c:264: PASS: group 2 (prio 2) with FAN_MARK_MOUNT and FAN_MARK_INODE ignore mask got no event
fanotify10.c:199: INFO: Test #1: don't ignore mount events created on another file
fanotify10.c:187: PASS: group 0 got event: mask 20 pid=2840 fd=15
fanotify10.c:187: PASS: group 1 got event: mask 20 pid=2840 fd=15
fanotify10.c:187: PASS: group 2 got event: mask 20 pid=2840 fd=15
fanotify10.c:187: PASS: group 0 got event: mask 20 pid=2840 fd=15
fanotify10.c:187: PASS: group 1 got event: mask 20 pid=2840 fd=15
fanotify10.c:187: PASS: group 2 got event: mask 20 pid=2840 fd=15
fanotify10.c:187: PASS: group 0 got event: mask 20 pid=2840 fd=15
fanotify10.c:187: PASS: group 1 got event: mask 20 pid=2840 fd=15
fanotify10.c:187: PASS: group 2 got event: mask 20 pid=2840 fd=15
fanotify10.c:199: INFO: Test #2: ignore inode events created on a specific mount point
fanotify10.c:187: PASS: group 0 got event: mask 20 pid=2840 fd=15
fanotify10.c:187: PASS: group 1 got event: mask 20 pid=2840 fd=15
fanotify10.c:187: PASS: group 2 got event: mask 20 pid=2840 fd=15
fanotify10.c:258: FAIL: group 0 (prio 1) with FAN_MARK_INODE and FAN_MARK_MOUNT ignore mask got event
fanotify10.c:258: FAIL: group 1 (prio 1) with FAN_MARK_INODE and FAN_MARK_MOUNT ignore mask got event
fanotify10.c:258: FAIL: group 2 (prio 1) with FAN_MARK_INODE and FAN_MARK_MOUNT ignore mask got event
fanotify10.c:258: FAIL: group 0 (prio 2) with FAN_MARK_INODE and FAN_MARK_MOUNT ignore mask got event
fanotify10.c:258: FAIL: group 1 (prio 2) with FAN_MARK_INODE and FAN_MARK_MOUNT ignore mask got event
fanotify10.c:258: FAIL: group 2 (prio 2) with FAN_MARK_INODE and FAN_MARK_MOUNT ignore mask got event
fanotify10.c:199: INFO: Test #3: don't ignore inode events created on another mount point
fanotify10.c:187: PASS: group 0 got event: mask 20 pid=2840 fd=15
fanotify10.c:187: PASS: group 1 got event: mask 20 pid=2840 fd=15
fanotify10.c:187: PASS: group 2 got event: mask 20 pid=2840 fd=15
fanotify10.c:187: PASS: group 0 got event: mask 20 pid=2840 fd=15
fanotify10.c:187: PASS: group 1 got event: mask 20 pid=2840 fd=15
fanotify10.c:187: PASS: group 2 got event: mask 20 pid=2840 fd=15
fanotify10.c:187: PASS: group 0 got event: mask 20 pid=2840 fd=15
fanotify10.c:187: PASS: group 1 got event: mask 20 pid=2840 fd=15
fanotify10.c:187: PASS: group 2 got event: mask 20 pid=2840 fd=15

Summary:
passed 30
failed 6
skipped 0
warnings 0
<<<execution_status>>>
initiation_status="ok"
duration=1 termination_type=exited termination_id=1 corefile=no
cutime=0 cstime=1
<<<test_end>>>

ProblemType: Bug
DistroRelease: Ubuntu 18.04
Package: linux-image-4.18.0-11-generic 4.18.0-11.12~18.04.1
ProcVersionSignature: User Name 4.18.0-11.12~18.04.1-generic 4.18.12
Uname: Linux 4.18.0-11-generic x86_64
ApportVersion: 2.20.9-0ubuntu7.4
Architecture: amd64
Date: Fri Nov 9 06:24:06 2018
SourcePackage: linux-signed-hwe-edge
UpgradeStatus: No upgrade log present (probably fresh install)

Po-Hsu Lin (cypressyew) wrote :
affects: linux-signed-hwe-edge (Ubuntu) → linux (Ubuntu)
Po-Hsu Lin (cypressyew) wrote :

Can be reproduced on different kernels.

This bug is missing log files that will aid in diagnosing the problem. While running an Ubuntu kernel (not a mainline or third-party kernel) please enter the following command in a terminal window:

apport-collect 1802454

and then change the status of the bug to 'Confirmed'.

If, due to the nature of the issue you have encountered, you are unable to run this command, please add a comment stating that fact and change the bug status to 'Confirmed'.

This change has been made by an automated script, maintained by the Ubuntu Kernel Team.

Changed in linux (Ubuntu):
status: New → Incomplete
Po-Hsu Lin (cypressyew) on 2018-11-16
Changed in ubuntu-kernel-tests:
status: New → In Progress
assignee: nobody → Po-Hsu Lin (cypressyew)
Changed in linux (Ubuntu):
assignee: nobody → Po-Hsu Lin (cypressyew)
status: Incomplete → In Progress
tags: added: cosmic trusty xenial
Po-Hsu Lin (cypressyew) wrote :

For cosmic, it's been fixed in stable update, bug 1801931

Po-Hsu Lin (cypressyew) on 2018-11-22
description: updated
Po-Hsu Lin (cypressyew) on 2018-11-22
description: updated
Po-Hsu Lin (cypressyew) on 2018-11-22
description: updated
Changed in linux (Ubuntu Bionic):
status: New → In Progress
Changed in linux (Ubuntu Bionic):
status: In Progress → Fix Committed
Brad Figg (brad-figg) wrote :

This bug is awaiting verification that the kernel in -proposed solves the problem. Please test the kernel and update this bug with the results. If the problem is solved, change the tag 'verification-needed-bionic' to 'verification-done-bionic'. If the problem still exists, change the tag 'verification-needed-bionic' to 'verification-failed-bionic'.

If verification is not done by 5 working days from today, this fix will be dropped from the source code, and this bug will be closed.

See https://wiki.ubuntu.com/Testing/EnableProposed for documentation how to enable and use -proposed. Thank you!

tags: added: verification-needed-bionic
Po-Hsu Lin (cypressyew) wrote :
Download full text (4.2 KiB)

Passed with Bionic SRU.

 startup='Tue Jan 15 13:44:04 2019'
 tst_device.c:230: INFO: Using test device LTP_DEV='/dev/loop0'
 tst_mkfs.c:90: INFO: Formatting /dev/loop0 with ext2 opts='' extra opts=''
 mke2fs 1.44.1 (24-Mar-2018)
 tst_test.c:1085: INFO: Timeout per run is 0h 05m 00s
 fanotify10.c:233: INFO: Test #0: ignore mount events created on a specific file
 fanotify10.c:221: PASS: group 0 got event: mask 20 pid=13198 fd=30
 fanotify10.c:221: PASS: group 1 got event: mask 20 pid=13198 fd=30
 fanotify10.c:221: PASS: group 2 got event: mask 20 pid=13198 fd=30
 fanotify10.c:299: PASS: group 0 (prio 1) with FAN_MARK_MOUNT and FAN_MARK_INODE ignore mask got no event
 fanotify10.c:299: PASS: group 1 (prio 1) with FAN_MARK_MOUNT and FAN_MARK_INODE ignore mask got no event
 fanotify10.c:299: PASS: group 2 (prio 1) with FAN_MARK_MOUNT and FAN_MARK_INODE ignore mask got no event
 fanotify10.c:299: PASS: group 0 (prio 2) with FAN_MARK_MOUNT and FAN_MARK_INODE ignore mask got no event
 fanotify10.c:299: PASS: group 1 (prio 2) with FAN_MARK_MOUNT and FAN_MARK_INODE ignore mask got no event
 fanotify10.c:299: PASS: group 2 (prio 2) with FAN_MARK_MOUNT and FAN_MARK_INODE ignore mask got no event
 fanotify10.c:233: INFO: Test #1: don't ignore mount events created on another file
 fanotify10.c:221: PASS: group 0 got event: mask 20 pid=13198 fd=30
 fanotify10.c:221: PASS: group 1 got event: mask 20 pid=13198 fd=30
 fanotify10.c:221: PASS: group 2 got event: mask 20 pid=13198 fd=30
 fanotify10.c:221: PASS: group 0 got event: mask 20 pid=13198 fd=30
 fanotify10.c:221: PASS: group 1 got event: mask 20 pid=13198 fd=30
 fanotify10.c:221: PASS: group 2 got event: mask 20 pid=13198 fd=30
 fanotify10.c:221: PASS: group 0 got event: mask 20 pid=13198 fd=30
 fanotify10.c:221: PASS: group 1 got event: mask 20 pid=13198 fd=30
 fanotify10.c:221: PASS: group 2 got event: mask 20 pid=13198 fd=30
 fanotify10.c:233: INFO: Test #2: ignore inode events created on a specific mount point
 fanotify10.c:221: PASS: group 0 got event: mask 20 pid=13198 fd=30
 fanotify10.c:221: PASS: group 1 got event: mask 20 pid=13198 fd=30
 fanotify10.c:221: PASS: group 2 got event: mask 20 pid=13198 fd=30
 fanotify10.c:299: PASS: group 0 (prio 1) with FAN_MARK_INODE and FAN_MARK_MOUNT ignore mask got no event
 fanotify10.c:299: PASS: group 1 (prio 1) with FAN_MARK_INODE and FAN_MARK_MOUNT ignore mask got no event
 fanotify10.c:299: PASS: group 2 (prio 1) with FAN_MARK_INODE and FAN_MARK_MOUNT ignore mask got no event
 fanotify10.c:299: PASS: group 0 (prio 2) with FAN_MARK_INODE and FAN_MARK_MOUNT ignore mask got no event
 fanotify10.c:299: PASS: group 1 (prio 2) with FAN_MARK_INODE and FAN_MARK_MOUNT ignore mask got no event
 fanotify10.c:299: PASS: group 2 (prio 2) with FAN_MARK_INODE and FAN_MARK_MOUNT ignore mask got no event
 fanotify10.c:233: INFO: Test #3: don't ignore inode events created on another mount point
 fanotify10.c:221: PASS: group 0 got event: mask 20 pid=13198 fd=30
 fanotify10.c:221: PASS: group 1 got event: mask 20 pid=13198 fd=30
 fanotify10.c:221: PASS: group 2 got event: mask 20 pid=13198 fd=30
 fanotify10.c:221: PASS: group 0 got event: mask 20 pid=13198 fd=30
 fanotif...

Read more...

tags: added: verification-done-bionic
removed: verification-needed-bionic
Launchpad Janitor (janitor) wrote :
Download full text (47.0 KiB)

This bug was fixed in the package linux - 4.15.0-44.47

---------------
linux (4.15.0-44.47) bionic; urgency=medium

  * linux: 4.15.0-44.47 -proposed tracker (LP: #1811419)

  * Packaging resync (LP: #1786013)
    - [Packaging] update helper scripts

  * CPU hard lockup with rigorous writes to NVMe drive (LP: #1810998)
    - blk-wbt: pass in enum wbt_flags to get_rq_wait()
    - blk-wbt: Avoid lock contention and thundering herd issue in wbt_wait
    - blk-wbt: move disable check into get_limit()
    - blk-wbt: use wq_has_sleeper() for wq active check
    - blk-wbt: fix has-sleeper queueing check
    - blk-wbt: abstract out end IO completion handler
    - blk-wbt: improve waking of tasks

  * To reduce the Realtek USB cardreader power consumption (LP: #1811337)
    - mmc: sdhci: Disable 1.8v modes (HS200/HS400/UHS) if controller can't support
      1.8v
    - mmc: core: Introduce MMC_CAP_SYNC_RUNTIME_PM
    - mmc: rtsx_usb_sdmmc: Don't runtime resume the device while changing led
    - mmc: rtsx_usb: Use MMC_CAP2_NO_SDIO
    - mmc: rtsx_usb: Enable MMC_CAP_ERASE to allow erase/discard/trim requests
    - mmc: rtsx_usb_sdmmc: Re-work runtime PM support
    - mmc: rtsx_usb_sdmmc: Re-work card detection/removal support
    - memstick: rtsx_usb_ms: Add missing pm_runtime_disable() in probe function
    - misc: rtsx_usb: Use USB remote wakeup signaling for card insertion detection
    - memstick: Prevent memstick host from getting runtime suspended during card
      detection
    - memstick: rtsx_usb_ms: Use ms_dev() helper
    - memstick: rtsx_usb_ms: Support runtime power management

  * Support non-strict iommu mode on arm64 (LP: #1806488)
    - iommu/io-pgtable-arm: Fix race handling in split_blk_unmap()
    - iommu/arm-smmu-v3: Implement flush_iotlb_all hook
    - iommu/dma: Add support for non-strict mode
    - iommu: Add "iommu.strict" command line option
    - iommu/io-pgtable-arm: Add support for non-strict mode
    - iommu/arm-smmu-v3: Add support for non-strict mode
    - iommu/io-pgtable-arm-v7s: Add support for non-strict mode
    - iommu/arm-smmu: Support non-strict mode

  * ELAN900C:00 04F3:2844 touchscreen doesn't work (LP: #1811335)
    - pinctrl: cannonlake: Fix community ordering for H variant
    - pinctrl: cannonlake: Fix HOSTSW_OWN register offset of H variant

  * Add Cavium ThunderX2 SoC UNCORE PMU driver (LP: #1811200)
    - perf: Export perf_event_update_userpage
    - Documentation: perf: Add documentation for ThunderX2 PMU uncore driver
    - drivers/perf: Add Cavium ThunderX2 SoC UNCORE PMU driver
    - [Config] New config CONFIG_THUNDERX2_PMU=m

  * Update hisilicon SoC-specific drivers (LP: #1810457)
    - SAUCE: Revert "net: hns3: Updates RX packet info fetch in case of multi BD"
    - Revert "UBUNTU: SAUCE: {topost} net: hns3: separate roce from nic when
      resetting"
    - Revert "UBUNTU: SAUCE: {topost} net: hns3: Use roce handle when calling roce
      callback function"
    - Revert "UBUNTU: SAUCE: {topost} net: hns3: Add calling roce callback
      function when link status change"
    - Revert "UBUNTU: SAUCE: {topost} net: hns3: optimize the process of notifying
      roce client"
    - Revert "UBUNTU: S...

Changed in linux (Ubuntu Bionic):
status: Fix Committed → Fix Released
Po-Hsu Lin (cypressyew) wrote :

For cosmic it's been fixed in stable updates:
9aa2a0a66f6f5f5b5d12e9cbd7caff7385cd6179

fsnotify: fix ignore mask logic in fsnotify()

Changed in linux (Ubuntu Cosmic):
status: New → Fix Released
Changed in linux (Ubuntu):
status: In Progress → Fix Released
Po-Hsu Lin (cypressyew) wrote :

For Trusty-4.4 test timeouted.
 startup='Fri Mar 22 02:07:25 2019'
 tst_device.c:231: INFO: Using test device LTP_DEV='/dev/loop0'
 tst_mkfs.c:90: INFO: Formatting /dev/loop0 with ext2 opts='' extra opts=''
 mke2fs 1.42.9 (4-Feb-2014)
 tst_test.c:1096: INFO: Timeout per run is 0h 05m 00s
 fanotify10.c:331: INFO: Test #0: ignore mount events created on a specific file
 fanotify10.c:292: PASS: group 0 got event: mask 20 pid=10758 fd=30
 fanotify10.c:292: PASS: group 1 got event: mask 20 pid=10758 fd=30
 fanotify10.c:292: PASS: group 2 got event: mask 20 pid=10758 fd=30
 fanotify10.c:398: PASS: group 0 (prio 1) with FAN_MARK_MOUNT and FAN_MARK_INODE ignore mask got no event
 fanotify10.c:398: PASS: group 1 (prio 1) with FAN_MARK_MOUNT and FAN_MARK_INODE ignore mask got no event
 fanotify10.c:398: PASS: group 2 (prio 1) with FAN_MARK_MOUNT and FAN_MARK_INODE ignore mask got no event
 fanotify10.c:398: PASS: group 0 (prio 2) with FAN_MARK_MOUNT and FAN_MARK_INODE ignore mask got no event
 fanotify10.c:398: PASS: group 1 (prio 2) with FAN_MARK_MOUNT and FAN_MARK_INODE ignore mask got no event
 fanotify10.c:398: PASS: group 2 (prio 2) with FAN_MARK_MOUNT and FAN_MARK_INODE ignore mask got no event
 Test timeouted, sending SIGKILL!
 Test timeouted, sending SIGKILL!
 Test timeouted, sending SIGKILL!
 Test timeouted, sending SIGKILL!
 Test timeouted, sending SIGKILL!
 Test timeouted, sending SIGKILL!
 Test timeouted, sending SIGKILL!
 Test timeouted, sending SIGKILL!
 Test timeouted, sending SIGKILL!
 Test timeouted, sending SIGKILL!
 Test timeouted, sending SIGKILL!
 Cannot kill test processes!
 Congratulation, likely test hit a kernel bug.
 Exitting uncleanly...

To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers