Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
Kernel
提交
8034e1ef
K
Kernel
项目概览
openeuler
/
Kernel
大约 1 年 前同步成功
通知
5
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
K
Kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
8034e1ef
编写于
1月 20, 2016
作者:
D
David S. Miller
浏览文件
操作
浏览文件
下载
差异文件
Merge
git://git.kernel.org/pub/scm/linux/kernel/git/pablo/nf
上级
bffae697
b16c2919
变更
10
隐藏空白更改
内联
并排
Showing
10 changed file
with
49 addition
and
34 deletion
+49
-34
include/net/netfilter/nf_conntrack_core.h
include/net/netfilter/nf_conntrack_core.h
+3
-5
net/netfilter/ipset/ip_set_hash_netiface.c
net/netfilter/ipset/ip_set_hash_netiface.c
+0
-4
net/netfilter/nf_conntrack_core.c
net/netfilter/nf_conntrack_core.c
+28
-10
net/netfilter/nf_conntrack_helper.c
net/netfilter/nf_conntrack_helper.c
+1
-1
net/netfilter/nf_conntrack_netlink.c
net/netfilter/nf_conntrack_netlink.c
+1
-1
net/netfilter/nf_tables_netdev.c
net/netfilter/nf_tables_netdev.c
+4
-4
net/netfilter/nfnetlink_cttimeout.c
net/netfilter/nfnetlink_cttimeout.c
+2
-2
net/netfilter/nft_byteorder.c
net/netfilter/nft_byteorder.c
+2
-4
net/netfilter/nft_ct.c
net/netfilter/nft_ct.c
+1
-1
net/netfilter/xt_TCPMSS.c
net/netfilter/xt_TCPMSS.c
+7
-2
未找到文件。
include/net/netfilter/nf_conntrack_core.h
浏览文件 @
8034e1ef
...
...
@@ -79,12 +79,10 @@ print_tuple(struct seq_file *s, const struct nf_conntrack_tuple *tuple,
const
struct
nf_conntrack_l3proto
*
l3proto
,
const
struct
nf_conntrack_l4proto
*
proto
);
#ifdef CONFIG_LOCKDEP
# define CONNTRACK_LOCKS 8
#else
# define CONNTRACK_LOCKS 1024
#endif
#define CONNTRACK_LOCKS 1024
extern
spinlock_t
nf_conntrack_locks
[
CONNTRACK_LOCKS
];
void
nf_conntrack_lock
(
spinlock_t
*
lock
);
extern
spinlock_t
nf_conntrack_expect_lock
;
...
...
net/netfilter/ipset/ip_set_hash_netiface.c
浏览文件 @
8034e1ef
...
...
@@ -164,8 +164,6 @@ hash_netiface4_kadt(struct ip_set *set, const struct sk_buff *skb,
};
struct
ip_set_ext
ext
=
IP_SET_INIT_KEXT
(
skb
,
opt
,
set
);
if
(
e
.
cidr
==
0
)
return
-
EINVAL
;
if
(
adt
==
IPSET_TEST
)
e
.
cidr
=
HOST_MASK
;
...
...
@@ -377,8 +375,6 @@ hash_netiface6_kadt(struct ip_set *set, const struct sk_buff *skb,
};
struct
ip_set_ext
ext
=
IP_SET_INIT_KEXT
(
skb
,
opt
,
set
);
if
(
e
.
cidr
==
0
)
return
-
EINVAL
;
if
(
adt
==
IPSET_TEST
)
e
.
cidr
=
HOST_MASK
;
...
...
net/netfilter/nf_conntrack_core.c
浏览文件 @
8034e1ef
...
...
@@ -66,6 +66,21 @@ EXPORT_SYMBOL_GPL(nf_conntrack_locks);
__cacheline_aligned_in_smp
DEFINE_SPINLOCK
(
nf_conntrack_expect_lock
);
EXPORT_SYMBOL_GPL
(
nf_conntrack_expect_lock
);
static
__read_mostly
spinlock_t
nf_conntrack_locks_all_lock
;
static
__read_mostly
bool
nf_conntrack_locks_all
;
void
nf_conntrack_lock
(
spinlock_t
*
lock
)
__acquires
(
lock
)
{
spin_lock
(
lock
);
while
(
unlikely
(
nf_conntrack_locks_all
))
{
spin_unlock
(
lock
);
spin_lock
(
&
nf_conntrack_locks_all_lock
);
spin_unlock
(
&
nf_conntrack_locks_all_lock
);
spin_lock
(
lock
);
}
}
EXPORT_SYMBOL_GPL
(
nf_conntrack_lock
);
static
void
nf_conntrack_double_unlock
(
unsigned
int
h1
,
unsigned
int
h2
)
{
h1
%=
CONNTRACK_LOCKS
;
...
...
@@ -82,12 +97,12 @@ static bool nf_conntrack_double_lock(struct net *net, unsigned int h1,
h1
%=
CONNTRACK_LOCKS
;
h2
%=
CONNTRACK_LOCKS
;
if
(
h1
<=
h2
)
{
spin
_lock
(
&
nf_conntrack_locks
[
h1
]);
nf_conntrack
_lock
(
&
nf_conntrack_locks
[
h1
]);
if
(
h1
!=
h2
)
spin_lock_nested
(
&
nf_conntrack_locks
[
h2
],
SINGLE_DEPTH_NESTING
);
}
else
{
spin
_lock
(
&
nf_conntrack_locks
[
h2
]);
nf_conntrack
_lock
(
&
nf_conntrack_locks
[
h2
]);
spin_lock_nested
(
&
nf_conntrack_locks
[
h1
],
SINGLE_DEPTH_NESTING
);
}
...
...
@@ -102,16 +117,19 @@ static void nf_conntrack_all_lock(void)
{
int
i
;
for
(
i
=
0
;
i
<
CONNTRACK_LOCKS
;
i
++
)
spin_lock_nested
(
&
nf_conntrack_locks
[
i
],
i
);
spin_lock
(
&
nf_conntrack_locks_all_lock
);
nf_conntrack_locks_all
=
true
;
for
(
i
=
0
;
i
<
CONNTRACK_LOCKS
;
i
++
)
{
spin_lock
(
&
nf_conntrack_locks
[
i
]);
spin_unlock
(
&
nf_conntrack_locks
[
i
]);
}
}
static
void
nf_conntrack_all_unlock
(
void
)
{
int
i
;
for
(
i
=
0
;
i
<
CONNTRACK_LOCKS
;
i
++
)
spin_unlock
(
&
nf_conntrack_locks
[
i
]);
nf_conntrack_locks_all
=
false
;
spin_unlock
(
&
nf_conntrack_locks_all_lock
);
}
unsigned
int
nf_conntrack_htable_size
__read_mostly
;
...
...
@@ -757,7 +775,7 @@ static noinline int early_drop(struct net *net, unsigned int _hash)
hash
=
hash_bucket
(
_hash
,
net
);
for
(;
i
<
net
->
ct
.
htable_size
;
i
++
)
{
lockp
=
&
nf_conntrack_locks
[
hash
%
CONNTRACK_LOCKS
];
spin
_lock
(
lockp
);
nf_conntrack
_lock
(
lockp
);
if
(
read_seqcount_retry
(
&
net
->
ct
.
generation
,
sequence
))
{
spin_unlock
(
lockp
);
goto
restart
;
...
...
@@ -1382,7 +1400,7 @@ get_next_corpse(struct net *net, int (*iter)(struct nf_conn *i, void *data),
for
(;
*
bucket
<
net
->
ct
.
htable_size
;
(
*
bucket
)
++
)
{
lockp
=
&
nf_conntrack_locks
[
*
bucket
%
CONNTRACK_LOCKS
];
local_bh_disable
();
spin
_lock
(
lockp
);
nf_conntrack
_lock
(
lockp
);
if
(
*
bucket
<
net
->
ct
.
htable_size
)
{
hlist_nulls_for_each_entry
(
h
,
n
,
&
net
->
ct
.
hash
[
*
bucket
],
hnnode
)
{
if
(
NF_CT_DIRECTION
(
h
)
!=
IP_CT_DIR_ORIGINAL
)
...
...
net/netfilter/nf_conntrack_helper.c
浏览文件 @
8034e1ef
...
...
@@ -425,7 +425,7 @@ static void __nf_conntrack_helper_unregister(struct nf_conntrack_helper *me,
}
local_bh_disable
();
for
(
i
=
0
;
i
<
net
->
ct
.
htable_size
;
i
++
)
{
spin
_lock
(
&
nf_conntrack_locks
[
i
%
CONNTRACK_LOCKS
]);
nf_conntrack
_lock
(
&
nf_conntrack_locks
[
i
%
CONNTRACK_LOCKS
]);
if
(
i
<
net
->
ct
.
htable_size
)
{
hlist_nulls_for_each_entry
(
h
,
nn
,
&
net
->
ct
.
hash
[
i
],
hnnode
)
unhelp
(
h
,
me
);
...
...
net/netfilter/nf_conntrack_netlink.c
浏览文件 @
8034e1ef
...
...
@@ -840,7 +840,7 @@ ctnetlink_dump_table(struct sk_buff *skb, struct netlink_callback *cb)
for
(;
cb
->
args
[
0
]
<
net
->
ct
.
htable_size
;
cb
->
args
[
0
]
++
)
{
restart:
lockp
=
&
nf_conntrack_locks
[
cb
->
args
[
0
]
%
CONNTRACK_LOCKS
];
spin
_lock
(
lockp
);
nf_conntrack
_lock
(
lockp
);
if
(
cb
->
args
[
0
]
>=
net
->
ct
.
htable_size
)
{
spin_unlock
(
lockp
);
goto
out
;
...
...
net/netfilter/nf_tables_netdev.c
浏览文件 @
8034e1ef
...
...
@@ -224,12 +224,12 @@ static int __init nf_tables_netdev_init(void)
nft_register_chain_type
(
&
nft_filter_chain_netdev
);
ret
=
register_pernet_subsys
(
&
nf_tables_netdev_net_ops
);
if
(
ret
<
0
)
if
(
ret
<
0
)
{
nft_unregister_chain_type
(
&
nft_filter_chain_netdev
);
return
ret
;
}
register_netdevice_notifier
(
&
nf_tables_netdev_notifier
);
return
ret
;
return
0
;
}
static
void
__exit
nf_tables_netdev_exit
(
void
)
...
...
net/netfilter/nfnetlink_cttimeout.c
浏览文件 @
8034e1ef
...
...
@@ -307,12 +307,12 @@ static void ctnl_untimeout(struct net *net, struct ctnl_timeout *timeout)
local_bh_disable
();
for
(
i
=
0
;
i
<
net
->
ct
.
htable_size
;
i
++
)
{
spin
_lock
(
&
nf_conntrack_locks
[
i
%
CONNTRACK_LOCKS
]);
nf_conntrack
_lock
(
&
nf_conntrack_locks
[
i
%
CONNTRACK_LOCKS
]);
if
(
i
<
net
->
ct
.
htable_size
)
{
hlist_nulls_for_each_entry
(
h
,
nn
,
&
net
->
ct
.
hash
[
i
],
hnnode
)
untimeout
(
h
,
timeout
);
}
spin_un
lock
(
&
nf_conntrack_locks
[
i
%
CONNTRACK_LOCKS
]);
nf_conntrack_
lock
(
&
nf_conntrack_locks
[
i
%
CONNTRACK_LOCKS
]);
}
local_bh_enable
();
}
...
...
net/netfilter/nft_byteorder.c
浏览文件 @
8034e1ef
...
...
@@ -46,16 +46,14 @@ static void nft_byteorder_eval(const struct nft_expr *expr,
switch
(
priv
->
op
)
{
case
NFT_BYTEORDER_NTOH
:
for
(
i
=
0
;
i
<
priv
->
len
/
8
;
i
++
)
{
src64
=
get_unaligned_be64
(
&
src
[
i
]);
src64
=
be64_to_cpu
((
__force
__be64
)
src64
);
src64
=
get_unaligned
((
u64
*
)
&
src
[
i
]);
put_unaligned_be64
(
src64
,
&
dst
[
i
]);
}
break
;
case
NFT_BYTEORDER_HTON
:
for
(
i
=
0
;
i
<
priv
->
len
/
8
;
i
++
)
{
src64
=
get_unaligned_be64
(
&
src
[
i
]);
src64
=
(
__force
u64
)
cpu_to_be64
(
src64
);
put_unaligned_be64
(
src64
,
&
dst
[
i
]);
put_unaligned
(
src64
,
(
u64
*
)
&
dst
[
i
]);
}
break
;
}
...
...
net/netfilter/nft_ct.c
浏览文件 @
8034e1ef
...
...
@@ -127,6 +127,7 @@ static void nft_ct_get_eval(const struct nft_expr *expr,
NF_CT_LABELS_MAX_SIZE
-
size
);
return
;
}
#endif
case
NFT_CT_BYTES
:
/* fallthrough */
case
NFT_CT_PKTS
:
{
const
struct
nf_conn_acct
*
acct
=
nf_conn_acct_find
(
ct
);
...
...
@@ -138,7 +139,6 @@ static void nft_ct_get_eval(const struct nft_expr *expr,
memcpy
(
dest
,
&
count
,
sizeof
(
count
));
return
;
}
#endif
default:
break
;
}
...
...
net/netfilter/xt_TCPMSS.c
浏览文件 @
8034e1ef
...
...
@@ -228,7 +228,7 @@ tcpmss_tg6(struct sk_buff *skb, const struct xt_action_param *par)
{
struct
ipv6hdr
*
ipv6h
=
ipv6_hdr
(
skb
);
u8
nexthdr
;
__be16
frag_off
;
__be16
frag_off
,
oldlen
,
newlen
;
int
tcphoff
;
int
ret
;
...
...
@@ -244,7 +244,12 @@ tcpmss_tg6(struct sk_buff *skb, const struct xt_action_param *par)
return
NF_DROP
;
if
(
ret
>
0
)
{
ipv6h
=
ipv6_hdr
(
skb
);
ipv6h
->
payload_len
=
htons
(
ntohs
(
ipv6h
->
payload_len
)
+
ret
);
oldlen
=
ipv6h
->
payload_len
;
newlen
=
htons
(
ntohs
(
oldlen
)
+
ret
);
if
(
skb
->
ip_summed
==
CHECKSUM_COMPLETE
)
skb
->
csum
=
csum_add
(
csum_sub
(
skb
->
csum
,
oldlen
),
newlen
);
ipv6h
->
payload_len
=
newlen
;
}
return
XT_CONTINUE
;
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录