Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Infinite loop for new mount after deleting mount #253

Open
wjhunter3 opened this issue Jul 26, 2023 · 7 comments
Open

Infinite loop for new mount after deleting mount #253

wjhunter3 opened this issue Jul 26, 2023 · 7 comments

Comments

@wjhunter3
Copy link
Contributor

If there are no mounted watch types initially, then a second mount point to watch is detected, after the first mount point is deleted, the daemon will enter an infinite loop. To re-create, from a fresh install:

  • Stop fapolicyd:
    # systemctl stop fapolicyd
  • Edit /etc/fapolicyd/fapolicyd.conf at set watch_fs to only ramfs:
    watch_fs = ramfs
  • Run fapolicyd in debug to view the loop:
    # /usr/sbin/fapolicyd --debug
  • Mount a ramfs:
    # mkdir /tmp/test
    # mount -t ramfs /dev/ram0 /tmp/test
  • Unmount the ramfs:
    # umount /tmp/test
  • Re-mount the ramfs:
    # mount -t ramfs /dev/ram0 /tmp/test
  • View the output of fapolicyd to see the infinite loop:
    .
    .
    .
    Trust database checks OK
    Starting to listen for events
    Mount change detected
    Added /test mount point
    Mount change detected
    Deleted /test mount point
    Mount change detected
    Added /test mount point
    Added /test mount point
    Added /test mount point
    Added /test mount point
    Added /test mount point
    .
    .
    .
@wjhunter3
Copy link
Contributor Author

The attached patch will resolve the problem.
fapolicyd-1.3.1-issue-253.patch.txt

@sopos
Copy link
Contributor

sopos commented Jul 27, 2023

I failed to reproduce the issue. Are the steps complete? Wasn't the fapolicyd-cli --update involved as well?

@wjhunter3
Copy link
Contributor Author

If it makes a difference I'm running fapolicyd 1.3.1 on RHEL 8, but I haven't seen any changes between 1.3.1 and 1.3.2 that would resolve the problems I'm seeing. The rules/trustdb do not come into play, so I'm not sure why fapolicyd-cli --update would be necessary.

@sopos
Copy link
Contributor

sopos commented Jul 27, 2023

I was trying it on rhel9. I'll try rhel8 as well.

@wjhunter3
Copy link
Contributor Author

Output from the terminals I used to recreate:
issue-253-term1.txt
issue-253-term2.txt

@wjhunter3
Copy link
Contributor Author

Also . . . the problem only manifests when there are no mount points to watch when fapolicyd starts.

stevegrubb added a commit that referenced this issue Nov 17, 2023
The patch changes the fanotify_update function to properly
handle deleting nodes when updating mount points. This should
take care of issue #253.
@stevegrubb
Copy link
Member

Hello, I just pushed commit d9029f8 which should take care of the problem. It fixes the code where it sits rather than making a new function. Please give it a try and let me know if it fixes your problem.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants