From: Greg Kroah-Hartman Date: Tue, 29 May 2018 06:58:21 +0000 (+0200) Subject: Drop fanotify-avoid-lost-events-due-to-enomem-for-unlimited-queues.patch from 4.16 X-Git-Tag: v3.18.111~3 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=5f506c854f4a868121a01fc125e604ac00e2f531;p=thirdparty%2Fkernel%2Fstable-queue.git Drop fanotify-avoid-lost-events-due-to-enomem-for-unlimited-queues.patch from 4.16 --- 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 index 31a36002900..00000000000 --- a/queue-4.16/fanotify-avoid-lost-events-due-to-enomem-for-unlimited-queues.patch +++ /dev/null @@ -1,96 +0,0 @@ -From foo@baz Sun May 27 16:10:03 CEST 2018 -From: Jan Kara -Date: Wed, 21 Feb 2018 14:10:59 +0100 -Subject: fanotify: Avoid lost events due to ENOMEM for unlimited queues - -From: Jan Kara - -[ 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 -Signed-off-by: Jan Kara -Signed-off-by: Sasha Levin -Signed-off-by: Greg Kroah-Hartman ---- - 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; diff --git a/queue-4.16/series b/queue-4.16/series index f878fbf37b5..15b790cbbfb 100644 --- a/queue-4.16/series +++ b/queue-4.16/series @@ -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