fdinfo.c (57b54d74dd5c559bd35f2affaf11d8828aaf5733) | fdinfo.c (36f10f55ff1d2867bfc48ed898a9cc0dc6b49dd2) |
---|---|
1// SPDX-License-Identifier: GPL-2.0 2#include <linux/file.h> 3#include <linux/fs.h> 4#include <linux/fsnotify_backend.h> 5#include <linux/idr.h> 6#include <linux/init.h> 7#include <linux/inotify.h> 8#include <linux/fanotify.h> 9#include <linux/kernel.h> 10#include <linux/namei.h> 11#include <linux/sched.h> 12#include <linux/types.h> 13#include <linux/seq_file.h> 14#include <linux/proc_fs.h> 15#include <linux/exportfs.h> 16 17#include "inotify/inotify.h" | 1// SPDX-License-Identifier: GPL-2.0 2#include <linux/file.h> 3#include <linux/fs.h> 4#include <linux/fsnotify_backend.h> 5#include <linux/idr.h> 6#include <linux/init.h> 7#include <linux/inotify.h> 8#include <linux/fanotify.h> 9#include <linux/kernel.h> 10#include <linux/namei.h> 11#include <linux/sched.h> 12#include <linux/types.h> 13#include <linux/seq_file.h> 14#include <linux/proc_fs.h> 15#include <linux/exportfs.h> 16 17#include "inotify/inotify.h" |
18#include "../fs/mount.h" | 18#include "fsnotify.h" |
19 20#if defined(CONFIG_PROC_FS) 21 22#if defined(CONFIG_INOTIFY_USER) || defined(CONFIG_FANOTIFY) 23 24static void show_fdinfo(struct seq_file *m, struct file *f, 25 void (*show)(struct seq_file *m, 26 struct fsnotify_mark *mark)) --- 49 unchanged lines hidden (view full) --- 76{ 77 struct inotify_inode_mark *inode_mark; 78 struct inode *inode; 79 80 if (mark->connector->type != FSNOTIFY_OBJ_TYPE_INODE) 81 return; 82 83 inode_mark = container_of(mark, struct inotify_inode_mark, fsn_mark); | 19 20#if defined(CONFIG_PROC_FS) 21 22#if defined(CONFIG_INOTIFY_USER) || defined(CONFIG_FANOTIFY) 23 24static void show_fdinfo(struct seq_file *m, struct file *f, 25 void (*show)(struct seq_file *m, 26 struct fsnotify_mark *mark)) --- 49 unchanged lines hidden (view full) --- 76{ 77 struct inotify_inode_mark *inode_mark; 78 struct inode *inode; 79 80 if (mark->connector->type != FSNOTIFY_OBJ_TYPE_INODE) 81 return; 82 83 inode_mark = container_of(mark, struct inotify_inode_mark, fsn_mark); |
84 inode = igrab(mark->connector->inode); | 84 inode = igrab(fsnotify_conn_inode(mark->connector)); |
85 if (inode) { 86 /* 87 * IN_ALL_EVENTS represents all of the mask bits 88 * that we expose to userspace. There is at 89 * least one bit (FS_EVENT_ON_CHILD) which is 90 * used only internally to the kernel. 91 */ 92 u32 mask = mark->mask & IN_ALL_EVENTS; --- 19 unchanged lines hidden (view full) --- 112{ 113 unsigned int mflags = 0; 114 struct inode *inode; 115 116 if (mark->flags & FSNOTIFY_MARK_FLAG_IGNORED_SURV_MODIFY) 117 mflags |= FAN_MARK_IGNORED_SURV_MODIFY; 118 119 if (mark->connector->type == FSNOTIFY_OBJ_TYPE_INODE) { | 85 if (inode) { 86 /* 87 * IN_ALL_EVENTS represents all of the mask bits 88 * that we expose to userspace. There is at 89 * least one bit (FS_EVENT_ON_CHILD) which is 90 * used only internally to the kernel. 91 */ 92 u32 mask = mark->mask & IN_ALL_EVENTS; --- 19 unchanged lines hidden (view full) --- 112{ 113 unsigned int mflags = 0; 114 struct inode *inode; 115 116 if (mark->flags & FSNOTIFY_MARK_FLAG_IGNORED_SURV_MODIFY) 117 mflags |= FAN_MARK_IGNORED_SURV_MODIFY; 118 119 if (mark->connector->type == FSNOTIFY_OBJ_TYPE_INODE) { |
120 inode = igrab(mark->connector->inode); | 120 inode = igrab(fsnotify_conn_inode(mark->connector)); |
121 if (!inode) 122 return; 123 seq_printf(m, "fanotify ino:%lx sdev:%x mflags:%x mask:%x ignored_mask:%x ", 124 inode->i_ino, inode->i_sb->s_dev, 125 mflags, mark->mask, mark->ignored_mask); 126 show_mark_fhandle(m, inode); 127 seq_putc(m, '\n'); 128 iput(inode); 129 } else if (mark->connector->type == FSNOTIFY_OBJ_TYPE_VFSMOUNT) { | 121 if (!inode) 122 return; 123 seq_printf(m, "fanotify ino:%lx sdev:%x mflags:%x mask:%x ignored_mask:%x ", 124 inode->i_ino, inode->i_sb->s_dev, 125 mflags, mark->mask, mark->ignored_mask); 126 show_mark_fhandle(m, inode); 127 seq_putc(m, '\n'); 128 iput(inode); 129 } else if (mark->connector->type == FSNOTIFY_OBJ_TYPE_VFSMOUNT) { |
130 struct mount *mnt = real_mount(mark->connector->mnt); | 130 struct mount *mnt = fsnotify_conn_mount(mark->connector); |
131 132 seq_printf(m, "fanotify mnt_id:%x mflags:%x mask:%x ignored_mask:%x\n", 133 mnt->mnt_id, mflags, mark->mask, mark->ignored_mask); 134 } 135} 136 137void fanotify_show_fdinfo(struct seq_file *m, struct file *f) 138{ --- 35 unchanged lines hidden --- | 131 132 seq_printf(m, "fanotify mnt_id:%x mflags:%x mask:%x ignored_mask:%x\n", 133 mnt->mnt_id, mflags, mark->mask, mark->ignored_mask); 134 } 135} 136 137void fanotify_show_fdinfo(struct seq_file *m, struct file *f) 138{ --- 35 unchanged lines hidden --- |