fanotify: Taint on use of FANOTIFY_ACCESS_PERMISSIONS
authorBen Hutchings <ben@decadent.org.uk>
Wed, 13 Jul 2016 00:37:22 +0000 (01:37 +0100)
committerBastian Blank <waldi@debian.org>
Fri, 22 Jun 2018 09:50:22 +0000 (10:50 +0100)
Various free and proprietary AV products use this feature and users
apparently want it.  But punting access checks to userland seems like
an easy way to deadlock the system, and there will be nothing we can
do about that.  So warn and taint the kernel if this feature is
actually used.

Gbp-Pq: Topic debian
Gbp-Pq: Name fanotify-taint-on-use-of-fanotify_access_permissions.patch

fs/notify/fanotify/fanotify_user.c

index c07eb3d655eaeb3be93c8245ba3dd5fa279320ac..659f918eef4c4c3cc218f6770d9ecdf549210554 100644 (file)
@@ -866,6 +866,14 @@ SYSCALL_DEFINE5(fanotify_mark, int, fanotify_fd, unsigned int, flags,
        if (mask & ~valid_mask)
                return -EINVAL;
 
+#ifdef CONFIG_FANOTIFY_ACCESS_PERMISSIONS
+       if (mask & FAN_ALL_PERM_EVENTS) {
+               pr_warn_once("%s (%d): Using fanotify permission checks may lead to deadlock; tainting kernel\n",
+                            current->comm, current->pid);
+               add_taint(TAINT_USER, LOCKDEP_STILL_OK);
+       }
+#endif
+
        f = fdget(fanotify_fd);
        if (unlikely(!f.file))
                return -EBADF;