David Miller wrote:
From: "Luca Tettamanti" <kronos.it@xxxxxxxxx>
Date: Thu, 15 Nov 2007 00:39:11 +0100
On Nov 15, 2007 12:00 AM, David Miller <davem@xxxxxxxxxxxxx> wrote:
From: Luca Tettamanti <kronos.it@xxxxxxxxx>
Date: Wed, 14 Nov 2007 22:28:55 +0100
Hello,
I'm testing a 64bit kernel on my machine and I've found an issue with
iptables (32 bit). Kernel is git current (9418d5dc).
What platform? x86? powerpc? sparc64?
x86
Ok, the userland pointer you provided seemed to be sign extended
to 64-bit, so there might be a pointer arithmetic bug in the
netfilter compat code somewhere.
It took me a few passes over the code, but it turns out to be
a simple typo :)
Luca, does this fix it for you?
[NETFILTER]: fix compat_nf_sockopt typo
It should pass opt to the ->get/->set functions, not ops.
Fixes compat fault reported by Luca Tettamanti <kronos.it@xxxxxxxxx>
Signed-off-by: Patrick McHardy <kaber@xxxxxxxxx>
---
commit ac55193be35872211189096ec600f94614a0179b
tree a6633e33307b5ec1e11fedc2d0e125ed6e2bd081
parent 99fee6d7e5748d96884667a4628118f7fc130ea0
author Patrick McHardy <kaber@xxxxxxxxx> Thu, 15 Nov 2007 14:46:43 +0100
committer Patrick McHardy <kaber@xxxxxxxxx> Thu, 15 Nov 2007 14:46:43 +0100
net/netfilter/nf_sockopt.c | 6 +++---
1 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/net/netfilter/nf_sockopt.c b/net/netfilter/nf_sockopt.c
index 87bc144..3dd4b3c 100644
--- a/net/netfilter/nf_sockopt.c
+++ b/net/netfilter/nf_sockopt.c
@@ -143,12 +143,12 @@ static int compat_nf_sockopt(struct sock *sk, int pf, int val,
if (ops->compat_get)
ret = ops->compat_get(sk, val, opt, len);
else
- ret = ops->get(sk, val, ops, len);
+ ret = ops->get(sk, val, opt, len);
} else {
if (ops->compat_set)
- ret = ops->compat_set(sk, val, ops, *len);
+ ret = ops->compat_set(sk, val, opt, *len);
else
- ret = ops->set(sk, val, ops, *len);
+ ret = ops->set(sk, val, opt, *len);
}
module_put(ops->owner);