netfilter: delete /proc THIS_MODULE references
Subsystems (3)
PATCH 1/1 netfilter: delete /proc THIS_MODULE references
/proc has been ignoring struct file_operations::owner field for ages.
---
net/netfilter/ipvs/ip_vs_app.c | 1 - net/netfilter/ipvs/ip_vs_conn.c | 2 -- net/netfilter/ipvs/ip_vs_ctl.c | 3 --- net/netfilter/nf_conntrack_expect.c | 1 - net/netfilter/nf_conntrack_standalone.c | 2 -- net/netfilter/nf_log.c | 1 - net/netfilter/nf_synproxy_core.c | 1 - net/netfilter/nfnetlink_log.c | 1 - net/netfilter/nfnetlink_queue.c | 1 - net/netfilter/x_tables.c | 3 --- net/netfilter/xt_hashlimit.c | 3 --- 11 files changed, 19 deletions(-)
net/netfilter/ipvs/ip_vs_app.c +0 -1
@@ -595,7 +595,6 @@ static int ip_vs_app_open(struct inode *inode, struct file *file) }static const struct file_operations ip_vs_app_fops = { - .owner =THIS_MODULE , .open = ip_vs_app_open, .read = seq_read, .llseek = seq_lseek,
net/netfilter/ipvs/ip_vs_conn.c +0 -2
@@ -1143,7 +1143,6 @@ static int ip_vs_conn_open(struct inode *inode, struct file *file) }static const struct file_operations ip_vs_conn_fops = { - .owner =THIS_MODULE , .open = ip_vs_conn_open, .read = seq_read, .llseek = seq_lseek,
@@ -1221,7 +1220,6 @@ static int ip_vs_conn_sync_open(struct inode *inode, struct file *file) }static const struct file_operations ip_vs_conn_sync_fops = { - .owner =THIS_MODULE , .open = ip_vs_conn_sync_open, .read = seq_read, .llseek = seq_lseek,
net/netfilter/ipvs/ip_vs_ctl.c +0 -3
@@ -2116,7 +2116,6 @@ static int ip_vs_info_open(struct inode *inode, struct file *file) }static const struct file_operations ip_vs_info_fops = { - .owner =THIS_MODULE , .open = ip_vs_info_open, .read = seq_read, .llseek = seq_lseek,
@@ -2161,7 +2160,6 @@ static int ip_vs_stats_seq_open(struct inode *inode, struct file *file) }static const struct file_operations ip_vs_stats_fops = { - .owner =THIS_MODULE , .open = ip_vs_stats_seq_open, .read = seq_read, .llseek = seq_lseek,
@@ -2230,7 +2228,6 @@ static int ip_vs_stats_percpu_seq_open(struct inode *inode, struct file *file) }static const struct file_operations ip_vs_stats_percpu_fops = { - .owner =THIS_MODULE , .open = ip_vs_stats_percpu_seq_open, .read = seq_read, .llseek = seq_lseek,
net/netfilter/nf_conntrack_expect.c +0 -1
@@ -649,7 +649,6 @@ static int exp_open(struct inode *inode, struct file *file) }static const struct file_operations exp_file_ops = { - .owner =THIS_MODULE , .open = exp_open, .read = seq_read, .llseek = seq_lseek,
net/netfilter/nf_conntrack_standalone.c +0 -2
@@ -382,7 +382,6 @@ static int ct_open(struct inode *inode, struct file *file) }static const struct file_operations ct_file_ops = { - .owner =THIS_MODULE , .open = ct_open, .read = seq_read, .llseek = seq_lseek,
@@ -475,7 +474,6 @@ static int ct_cpu_seq_open(struct inode *inode, struct file *file) }static const struct file_operations ct_cpu_seq_fops = { - .owner =THIS_MODULE , .open = ct_cpu_seq_open, .read = seq_read, .llseek = seq_lseek,
net/netfilter/nf_log.c +0 -1
@@ -402,7 +402,6 @@ static int nflog_open(struct inode *inode, struct file *file) }static const struct file_operations nflog_file_ops = { - .owner =THIS_MODULE , .open = nflog_open, .read = seq_read, .llseek = seq_lseek,
net/netfilter/nf_synproxy_core.c +0 -1
@@ -317,7 +317,6 @@ static int synproxy_cpu_seq_open(struct inode *inode, struct file *file) }static const struct file_operations synproxy_cpu_seq_fops = { - .owner =THIS_MODULE , .open = synproxy_cpu_seq_open, .read = seq_read, .llseek = seq_lseek,
net/netfilter/nfnetlink_log.c +0 -1
@@ -1054,7 +1054,6 @@ static int nful_open(struct inode *inode, struct file *file) }static const struct file_operations nful_file_ops = { - .owner =THIS_MODULE , .open = nful_open, .read = seq_read, .llseek = seq_lseek,
net/netfilter/nfnetlink_queue.c +0 -1
@@ -1477,7 +1477,6 @@ static int nfqnl_open(struct inode *inode, struct file *file) }static const struct file_operations nfqnl_file_ops = { - .owner =THIS_MODULE , .open = nfqnl_open, .read = seq_read, .llseek = seq_lseek,
net/netfilter/x_tables.c +0 -3
@@ -1362,7 +1362,6 @@ static int xt_table_open(struct inode *inode, struct file *file) }static const struct file_operations xt_table_ops = { - .owner =THIS_MODULE , .open = xt_table_open, .read = seq_read, .llseek = seq_lseek,
@@ -1498,7 +1497,6 @@ static int xt_match_open(struct inode *inode, struct file *file) }static const struct file_operations xt_match_ops = { - .owner =THIS_MODULE , .open = xt_match_open, .read = seq_read, .llseek = seq_lseek,
@@ -1551,7 +1549,6 @@ static int xt_target_open(struct inode *inode, struct file *file) }static const struct file_operations xt_target_ops = { - .owner =THIS_MODULE , .open = xt_target_open, .read = seq_read, .llseek = seq_lseek,
net/netfilter/xt_hashlimit.c +0 -3
@@ -1266,7 +1266,6 @@ static int dl_proc_open(struct inode *inode, struct file *file) }static const struct file_operations dl_file_ops_v2 = { - .owner =THIS_MODULE , .open = dl_proc_open_v2, .read = seq_read, .llseek = seq_lseek,
@@ -1274,7 +1273,6 @@ static const struct file_operations dl_file_ops_v2 = { };static const struct file_operations dl_file_ops_v1 = { - .owner =THIS_MODULE , .open = dl_proc_open_v1, .read = seq_read, .llseek = seq_lseek,
@@ -1282,7 +1280,6 @@ static const struct file_operations dl_file_ops_v1 = { };static const struct file_operations dl_file_ops = { - .owner =THIS_MODULE , .open = dl_proc_open, .read = seq_read, .llseek = seq_lseek,
Hello,
Quoted 3 lines · Alexey Dobriyan
/proc has been ignoring struct
file_operations::ownerfield for ages.Signed-off-by Alexey Dobriyan <[email protected]>
IPVS part looks good to me.
Quoted 62 lines
---
net/netfilter/ipvs/ip_vs_app.c | 1 - net/netfilter/ipvs/ip_vs_conn.c | 2 -- net/netfilter/ipvs/ip_vs_ctl.c | 3 --- net/netfilter/nf_conntrack_expect.c | 1 - net/netfilter/nf_conntrack_standalone.c | 2 -- net/netfilter/nf_log.c | 1 - net/netfilter/nf_synproxy_core.c | 1 - net/netfilter/nfnetlink_log.c | 1 - net/netfilter/nfnetlink_queue.c | 1 - net/netfilter/x_tables.c | 3 --- net/netfilter/xt_hashlimit.c | 3 --- 11 files changed, 19 deletions(-)net/netfilter/ipvs/ip_vs_app.c +0
-1@@ -595,7 +595,6 @@ static int ip_vs_app_open(struct inode *inode, struct file *file) }static const struct file_operations ip_vs_app_fops = { - .owner =THIS_MODULE , .open = ip_vs_app_open, .read = seq_read, .llseek = seq_lseek,net/netfilter/ipvs/ip_vs_conn.c +0
-2@@ -1143,7 +1143,6 @@ static int ip_vs_conn_open(struct inode *inode, struct file *file) }static const struct file_operations ip_vs_conn_fops = { - .owner =THIS_MODULE , .open = ip_vs_conn_open, .read = seq_read, .llseek = seq_lseek,@@ -1221,7 +1220,6 @@ static int ip_vs_conn_sync_open(struct inode *inode, struct file *file) }static const struct file_operations ip_vs_conn_sync_fops = { - .owner =THIS_MODULE , .open = ip_vs_conn_sync_open, .read = seq_read, .llseek = seq_lseek,net/netfilter/ipvs/ip_vs_ctl.c +0
-2@@ -2116,7 +2116,6 @@ static int ip_vs_info_open(struct inode *inode, struct file *file) }static const struct file_operations ip_vs_info_fops = { - .owner =THIS_MODULE , .open = ip_vs_info_open, .read = seq_read, .llseek = seq_lseek,@@ -2161,7 +2160,6 @@ static int ip_vs_stats_seq_open(struct inode *inode, struct file *file) }static const struct file_operations ip_vs_stats_fops = { - .owner =THIS_MODULE , .open = ip_vs_stats_seq_open, .read = seq_read, .llseek = seq_lseek,
net/netfilter/ipvs/ip_vs_ctl.c static int ip_vs_stats_percpu_seq_open(struct inode *inode, struct file *file) · line 2233
Quoted 7 lines
net/netfilter/ipvs/ip_vs_ctl.c +0
-1@@ -2230,7 +2228,6 @@ static int ip_vs_stats_percpu_seq_open(struct inode *inode, struct file *file) }static const struct file_operations ip_vs_stats_percpu_fops = { - .owner =THIS_MODULE , .open = ip_vs_stats_percpu_seq_open, .read = seq_read, .llseek = seq_lseek,
Regards
--
Julian Anastasov <[email protected]>
PATCH v2 1/1 netfilter: delete /proc THIS_MODULE references
In reply to Alexey Dobriyan/proc has been ignoring struct file_operations::owner field for 10 years. Specifically, it started with commit 786d7e1612f0b0adb6046f19b906609e4fe8b1ba ("Fix rmmod/read/write races in /proc entries"). Notice the chunk where inode->i_fop is initialized with proxy struct file_operations for regular files:
- if (de->proc_fops)
- inode->i_fop = de->proc_fops;
+ if (de->proc_fops) {
+ if (S_ISREG(inode->i_mode))
+ inode->i_fop = &proc_reg_file_ops;
+ else
+ inode->i_fop = de->proc_fops;
+ }
VFS stopped pinning module at this point.
# ipvs Acked-by: Julian Anastasov <[email protected]> Signed-off-by: Alexey Dobriyan <[email protected]> ---
net/netfilter/ipvs/ip_vs_app.c | 1 - net/netfilter/ipvs/ip_vs_conn.c | 2 -- net/netfilter/ipvs/ip_vs_ctl.c | 3 --- net/netfilter/nf_conntrack_expect.c | 1 - net/netfilter/nf_conntrack_standalone.c | 2 -- net/netfilter/nf_log.c | 1 - net/netfilter/nf_synproxy_core.c | 1 - net/netfilter/nfnetlink_log.c | 1 - net/netfilter/nfnetlink_queue.c | 1 - net/netfilter/x_tables.c | 3 --- net/netfilter/xt_hashlimit.c | 3 --- 11 files changed, 19 deletions(-)
net/netfilter/ipvs/ip_vs_app.c +0 -1
@@ -595,7 +595,6 @@ static int ip_vs_app_open(struct inode *inode, struct file *file) }static const struct file_operations ip_vs_app_fops = { - .owner =THIS_MODULE , .open = ip_vs_app_open, .read = seq_read, .llseek = seq_lseek,
net/netfilter/ipvs/ip_vs_conn.c +0 -2
@@ -1143,7 +1143,6 @@ static int ip_vs_conn_open(struct inode *inode, struct file *file) }static const struct file_operations ip_vs_conn_fops = { - .owner =THIS_MODULE , .open = ip_vs_conn_open, .read = seq_read, .llseek = seq_lseek,
@@ -1221,7 +1220,6 @@ static int ip_vs_conn_sync_open(struct inode *inode, struct file *file) }static const struct file_operations ip_vs_conn_sync_fops = { - .owner =THIS_MODULE , .open = ip_vs_conn_sync_open, .read = seq_read, .llseek = seq_lseek,
net/netfilter/ipvs/ip_vs_ctl.c +0 -3
@@ -2116,7 +2116,6 @@ static int ip_vs_info_open(struct inode *inode, struct file *file) }static const struct file_operations ip_vs_info_fops = { - .owner =THIS_MODULE , .open = ip_vs_info_open, .read = seq_read, .llseek = seq_lseek,
@@ -2161,7 +2160,6 @@ static int ip_vs_stats_seq_open(struct inode *inode, struct file *file) }static const struct file_operations ip_vs_stats_fops = { - .owner =THIS_MODULE , .open = ip_vs_stats_seq_open, .read = seq_read, .llseek = seq_lseek,
@@ -2230,7 +2228,6 @@ static int ip_vs_stats_percpu_seq_open(struct inode *inode, struct file *file) }static const struct file_operations ip_vs_stats_percpu_fops = { - .owner =THIS_MODULE , .open = ip_vs_stats_percpu_seq_open, .read = seq_read, .llseek = seq_lseek,
net/netfilter/nf_conntrack_expect.c +0 -1
@@ -649,7 +649,6 @@ static int exp_open(struct inode *inode, struct file *file) }static const struct file_operations exp_file_ops = { - .owner =THIS_MODULE , .open = exp_open, .read = seq_read, .llseek = seq_lseek,
net/netfilter/nf_conntrack_standalone.c +0 -2
@@ -382,7 +382,6 @@ static int ct_open(struct inode *inode, struct file *file) }static const struct file_operations ct_file_ops = { - .owner =THIS_MODULE , .open = ct_open, .read = seq_read, .llseek = seq_lseek,
@@ -475,7 +474,6 @@ static int ct_cpu_seq_open(struct inode *inode, struct file *file) }static const struct file_operations ct_cpu_seq_fops = { - .owner =THIS_MODULE , .open = ct_cpu_seq_open, .read = seq_read, .llseek = seq_lseek,
net/netfilter/nf_log.c +0 -1
@@ -402,7 +402,6 @@ static int nflog_open(struct inode *inode, struct file *file) }static const struct file_operations nflog_file_ops = { - .owner =THIS_MODULE , .open = nflog_open, .read = seq_read, .llseek = seq_lseek,
net/netfilter/nf_synproxy_core.c +0 -1
@@ -317,7 +317,6 @@ static int synproxy_cpu_seq_open(struct inode *inode, struct file *file) }static const struct file_operations synproxy_cpu_seq_fops = { - .owner =THIS_MODULE , .open = synproxy_cpu_seq_open, .read = seq_read, .llseek = seq_lseek,
net/netfilter/nfnetlink_log.c +0 -1
@@ -1054,7 +1054,6 @@ static int nful_open(struct inode *inode, struct file *file) }static const struct file_operations nful_file_ops = { - .owner =THIS_MODULE , .open = nful_open, .read = seq_read, .llseek = seq_lseek,
net/netfilter/nfnetlink_queue.c +0 -1
@@ -1477,7 +1477,6 @@ static int nfqnl_open(struct inode *inode, struct file *file) }static const struct file_operations nfqnl_file_ops = { - .owner =THIS_MODULE , .open = nfqnl_open, .read = seq_read, .llseek = seq_lseek,
net/netfilter/x_tables.c +0 -3
@@ -1362,7 +1362,6 @@ static int xt_table_open(struct inode *inode, struct file *file) }static const struct file_operations xt_table_ops = { - .owner =THIS_MODULE , .open = xt_table_open, .read = seq_read, .llseek = seq_lseek,
@@ -1498,7 +1497,6 @@ static int xt_match_open(struct inode *inode, struct file *file) }static const struct file_operations xt_match_ops = { - .owner =THIS_MODULE , .open = xt_match_open, .read = seq_read, .llseek = seq_lseek,
@@ -1551,7 +1549,6 @@ static int xt_target_open(struct inode *inode, struct file *file) }static const struct file_operations xt_target_ops = { - .owner =THIS_MODULE , .open = xt_target_open, .read = seq_read, .llseek = seq_lseek,
net/netfilter/xt_hashlimit.c +0 -3
@@ -1266,7 +1266,6 @@ static int dl_proc_open(struct inode *inode, struct file *file) }static const struct file_operations dl_file_ops_v2 = { - .owner =THIS_MODULE , .open = dl_proc_open_v2, .read = seq_read, .llseek = seq_lseek,
@@ -1274,7 +1273,6 @@ static const struct file_operations dl_file_ops_v2 = { };static const struct file_operations dl_file_ops_v1 = { - .owner =THIS_MODULE , .open = dl_proc_open_v1, .read = seq_read, .llseek = seq_lseek,
@@ -1282,7 +1280,6 @@ static const struct file_operations dl_file_ops_v1 = { };static const struct file_operations dl_file_ops = { - .owner =THIS_MODULE , .open = dl_proc_open, .read = seq_read, .llseek = seq_lseek,
Quoted 15 lines · Alexey Dobriyan
/proc has been ignoring struct
file_operations::ownerfield for 10 years. Specifically, it started with commit786d7e1612f0b0adb6046f19b906609e4fe8b1ba("Fix rmmod/read/write races in /proc entries"). Notice the chunk whereinode->i_fopis initialized with proxy structfile_operationsfor regular files:- if (
de->proc_fops)
-inode->i_fop=de->proc_fops;
+ if (de->proc_fops) {
+ if (S_ISREG(inode->i_mode))
+inode->i_fop=&proc_reg_file_ops;
+ else
+inode->i_fop=de->proc_fops;
+ }
Quoted 4 lines
VFS stopped pinning module at this point.
# ipvs Acked-by: Julian Anastasov <[email protected]>
Likewise, the IPVS portion looks good to me.
Quoted 1 line
Signed-off-by Alexey Dobriyan <[email protected]>
Quoted 15 lines · Alexey Dobriyan
/proc has been ignoring struct
file_operations::ownerfield for 10 years. Specifically, it started with commit786d7e1612f0b0adb6046f19b906609e4fe8b1ba("Fix rmmod/read/write races in /proc entries"). Notice the chunk whereinode->i_fopis initialized with proxy structfile_operationsfor regular files:- if (
de->proc_fops)
-inode->i_fop=de->proc_fops;
+ if (de->proc_fops) {
+ if (S_ISREG(inode->i_mode))
+inode->i_fop=&proc_reg_file_ops;
+ else
+inode->i_fop=de->proc_fops;
+ }
Quoted 1 line
VFS stopped pinning module at this point.
Applied, thanks.