Skip to content

Commit 439117c

Browse files
Florian Westphalgregkh
authored andcommitted
netfilter: xt_socket: enable defrag after all other checks
[ Upstream commit 542be3f ] Originally this did not matter because defrag was enabled once per netns and only disabled again on netns dismantle. When this got changed I should have adjusted checkentry to not leave defrag enabled on error. Fixes: de8c121 ("netfilter: disable defrag once its no longer needed") Signed-off-by: Florian Westphal <fw@strlen.de> Signed-off-by: Sasha Levin <sashal@kernel.org>
1 parent fde99f6 commit 439117c

1 file changed

Lines changed: 6 additions & 17 deletions

File tree

net/netfilter/xt_socket.c

Lines changed: 6 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -168,52 +168,41 @@ static int socket_mt_enable_defrag(struct net *net, int family)
168168
static int socket_mt_v1_check(const struct xt_mtchk_param *par)
169169
{
170170
const struct xt_socket_mtinfo1 *info = (struct xt_socket_mtinfo1 *) par->matchinfo;
171-
int err;
172-
173-
err = socket_mt_enable_defrag(par->net, par->family);
174-
if (err)
175-
return err;
176171

177172
if (info->flags & ~XT_SOCKET_FLAGS_V1) {
178173
pr_info_ratelimited("unknown flags 0x%x\n",
179174
info->flags & ~XT_SOCKET_FLAGS_V1);
180175
return -EINVAL;
181176
}
182-
return 0;
177+
178+
return socket_mt_enable_defrag(par->net, par->family);
183179
}
184180

185181
static int socket_mt_v2_check(const struct xt_mtchk_param *par)
186182
{
187183
const struct xt_socket_mtinfo2 *info = (struct xt_socket_mtinfo2 *) par->matchinfo;
188-
int err;
189-
190-
err = socket_mt_enable_defrag(par->net, par->family);
191-
if (err)
192-
return err;
193184

194185
if (info->flags & ~XT_SOCKET_FLAGS_V2) {
195186
pr_info_ratelimited("unknown flags 0x%x\n",
196187
info->flags & ~XT_SOCKET_FLAGS_V2);
197188
return -EINVAL;
198189
}
199-
return 0;
190+
191+
return socket_mt_enable_defrag(par->net, par->family);
200192
}
201193

202194
static int socket_mt_v3_check(const struct xt_mtchk_param *par)
203195
{
204196
const struct xt_socket_mtinfo3 *info =
205197
(struct xt_socket_mtinfo3 *)par->matchinfo;
206-
int err;
207198

208-
err = socket_mt_enable_defrag(par->net, par->family);
209-
if (err)
210-
return err;
211199
if (info->flags & ~XT_SOCKET_FLAGS_V3) {
212200
pr_info_ratelimited("unknown flags 0x%x\n",
213201
info->flags & ~XT_SOCKET_FLAGS_V3);
214202
return -EINVAL;
215203
}
216-
return 0;
204+
205+
return socket_mt_enable_defrag(par->net, par->family);
217206
}
218207

219208
static void socket_mt_destroy(const struct xt_mtdtor_param *par)

0 commit comments

Comments
 (0)