netfilter: delete /proc THIS_MODULE references
/proc has been ignoring struct file_operations::owner field for 10 years.
Specifically, it started with commit 786d7e1612
("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 <ja@ssi.bg>
Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com>
Acked-by: Simon Horman <horms+renesas@verge.net.au>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
This commit is contained in:
parent
b0c3dc65e1
commit
4c87158dae
|
@ -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,
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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,
|
||||
|
|
Loading…
Reference in New Issue