[NETFILTER]: ip_tables: fix compat related crash
authorDmitry Mishin <dim@openvz.org>
Tue, 5 Jun 2007 19:56:09 +0000 (12:56 -0700)
committerDavid S. Miller <davem@sunset.davemloft.net>
Thu, 7 Jun 2007 20:40:32 +0000 (13:40 -0700)
commit4c1b52bc7a2f5ee01ea3fc248a8748a1c6843f7c
tree4176d06988ff65fa3c5d060642523093a88c7a64
parent3c158f7f57601bc27eab82f0dc4fd3fad314d845
[NETFILTER]: ip_tables: fix compat related crash

check_compat_entry_size_and_hooks iterates over the matches and calls
compat_check_calc_match, which loads the match and calculates the
compat offsets, but unlike the non-compat version, doesn't call
->checkentry yet. On error however it calls cleanup_matches, which in
turn calls ->destroy, which can result in crashes if the destroy
function (validly) expects to only get called after the checkentry
function.

Add a compat_release_match function that only drops the module reference
on error and rename compat_check_calc_match to compat_find_calc_match to
reflect the fact that it doesn't call the checkentry function.

Reported by Jan Engelhardt <jengelh@linux01.gwdg.de>

Signed-off-by: Dmitry Mishin <dim@openvz.org>
Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/linux/netfilter_ipv4/ip_tables.h
net/ipv4/netfilter/ip_tables.c