]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
Drop fanotify-avoid-lost-events-due-to-enomem-for-unlimited-queues.patch from 4.16
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 29 May 2018 06:58:21 +0000 (08:58 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 29 May 2018 06:58:21 +0000 (08:58 +0200)
queue-4.16/fanotify-avoid-lost-events-due-to-enomem-for-unlimited-queues.patch [deleted file]
queue-4.16/series

diff --git a/queue-4.16/fanotify-avoid-lost-events-due-to-enomem-for-unlimited-queues.patch b/queue-4.16/fanotify-avoid-lost-events-due-to-enomem-for-unlimited-queues.patch
deleted file mode 100644 (file)
index 31a3600..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-From foo@baz Sun May 27 16:10:03 CEST 2018
-From: Jan Kara <jack@suse.cz>
-Date: Wed, 21 Feb 2018 14:10:59 +0100
-Subject: fanotify: Avoid lost events due to ENOMEM for unlimited queues
-
-From: Jan Kara <jack@suse.cz>
-
-[ Upstream commit 1f5eaa90010ed7cf0ae90a526c48657d02c6086f ]
-
-Fanotify queues of unlimited length do not expect events can be lost.
-Since these queues are used for system auditing and other security
-related tasks, loosing events can even have security implications.
-Currently, since the allocation is small (32-bytes), it cannot fail
-however when we start accounting events in memcgs, allocation can start
-failing. So avoid loosing events due to failure to allocate memory by
-making event allocation use __GFP_NOFAIL.
-
-Reviewed-by: Amir Goldstein <amir73il@gmail.com>
-Signed-off-by: Jan Kara <jack@suse.cz>
-Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- fs/notify/fanotify/fanotify.c      |   19 ++++++++++++++-----
- fs/notify/fanotify/fanotify.h      |    3 ++-
- fs/notify/fanotify/fanotify_user.c |    2 +-
- 3 files changed, 17 insertions(+), 7 deletions(-)
-
---- a/fs/notify/fanotify/fanotify.c
-+++ b/fs/notify/fanotify/fanotify.c
-@@ -135,23 +135,32 @@ static bool fanotify_should_send_event(s
-       return false;
- }
--struct fanotify_event_info *fanotify_alloc_event(struct inode *inode, u32 mask,
-+struct fanotify_event_info *fanotify_alloc_event(struct fsnotify_group *group,
-+                                               struct inode *inode, u32 mask,
-                                                const struct path *path)
- {
-       struct fanotify_event_info *event;
-+      gfp_t gfp = GFP_KERNEL;
-+
-+      /*
-+       * For queues with unlimited length lost events are not expected and
-+       * can possibly have security implications. Avoid losing events when
-+       * memory is short.
-+       */
-+      if (group->max_events == UINT_MAX)
-+              gfp |= __GFP_NOFAIL;
-       if (fanotify_is_perm_event(mask)) {
-               struct fanotify_perm_event_info *pevent;
--              pevent = kmem_cache_alloc(fanotify_perm_event_cachep,
--                                        GFP_KERNEL);
-+              pevent = kmem_cache_alloc(fanotify_perm_event_cachep, gfp);
-               if (!pevent)
-                       return NULL;
-               event = &pevent->fae;
-               pevent->response = 0;
-               goto init;
-       }
--      event = kmem_cache_alloc(fanotify_event_cachep, GFP_KERNEL);
-+      event = kmem_cache_alloc(fanotify_event_cachep, gfp);
-       if (!event)
-               return NULL;
- init: __maybe_unused
-@@ -206,7 +215,7 @@ static int fanotify_handle_event(struct
-                       return 0;
-       }
--      event = fanotify_alloc_event(inode, mask, data);
-+      event = fanotify_alloc_event(group, inode, mask, data);
-       ret = -ENOMEM;
-       if (unlikely(!event))
-               goto finish;
---- a/fs/notify/fanotify/fanotify.h
-+++ b/fs/notify/fanotify/fanotify.h
-@@ -52,5 +52,6 @@ static inline struct fanotify_event_info
-       return container_of(fse, struct fanotify_event_info, fse);
- }
--struct fanotify_event_info *fanotify_alloc_event(struct inode *inode, u32 mask,
-+struct fanotify_event_info *fanotify_alloc_event(struct fsnotify_group *group,
-+                                               struct inode *inode, u32 mask,
-                                                const struct path *path);
---- a/fs/notify/fanotify/fanotify_user.c
-+++ b/fs/notify/fanotify/fanotify_user.c
-@@ -757,7 +757,7 @@ SYSCALL_DEFINE2(fanotify_init, unsigned
-       group->fanotify_data.user = user;
-       atomic_inc(&user->fanotify_listeners);
--      oevent = fanotify_alloc_event(NULL, FS_Q_OVERFLOW, NULL);
-+      oevent = fanotify_alloc_event(group, NULL, FS_Q_OVERFLOW, NULL);
-       if (unlikely(!oevent)) {
-               fd = -ENOMEM;
-               goto out_destroy_group;
index f878fbf37b520de7c25f32c3f538532eca51f665..15b790cbbfbf7737de6d1882e9e81a49fcc1b72f 100644 (file)
@@ -228,7 +228,6 @@ cpufreq-reorder-cpufreq_online-error-code-path.patch
 dpaa_eth-fix-sg-mapping.patch
 pci-add-function-1-dma-alias-quirk-for-marvell-88se9220.patch
 udf-provide-saner-default-for-invalid-uid-gid.patch
-fanotify-avoid-lost-events-due-to-enomem-for-unlimited-queues.patch
 ixgbe-prevent-ptp_rx_hang-from-running-when-in-filter_all-mode.patch
 sh_eth-fix-tsu-init-on-sh7734-r8a7740.patch
 power-supply-ltc2941-battery-gauge-fix-temperature-units.patch