]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blob - releases/2.6.20.2/fix-ipx-module-unload.patch
4.9-stable patches
[thirdparty/kernel/stable-queue.git] / releases / 2.6.20.2 / fix-ipx-module-unload.patch
1 From stable-bounces@linux.kernel.org Tue Feb 13 18:21:10 2007
2 From: Jiri Bohac <jbohac@suse.cz>
3 Date: Tue, 13 Feb 2007 18:19:47 -0800 (PST)
4 Subject: Fix IPX module unload
5 To: stable@kernel.org
6 Cc: bunk@stusta.de
7 Message-ID: <20070213.181947.28789120.davem@davemloft.net>
8
9 From: Jiri Bohac <jbohac@suse.cz>
10
11 [IPX]: Fix NULL pointer dereference on ipx unload
12
13 Fixes a null pointer dereference when unloading the ipx module.
14
15 On initialization of the ipx module, registering certain packet
16 types can fail. When this happens, unloading the module later
17 dereferences NULL pointers. This patch fixes that. Please apply.
18
19 Signed-off-by: Jiri Bohac <jbohac@suse.cz>
20 Signed-off-by: David S. Miller <davem@davemloft.net>
21 Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
22
23 ---
24 net/ipx/af_ipx.c | 26 +++++++++++++++++---------
25 1 file changed, 17 insertions(+), 9 deletions(-)
26
27 --- linux-2.6.20.1.orig/net/ipx/af_ipx.c
28 +++ linux-2.6.20.1/net/ipx/af_ipx.c
29 @@ -2035,19 +2035,27 @@ static void __exit ipx_proto_finito(void
30
31 ipxitf_cleanup();
32
33 - unregister_snap_client(pSNAP_datalink);
34 - pSNAP_datalink = NULL;
35 -
36 - unregister_8022_client(p8022_datalink);
37 - p8022_datalink = NULL;
38 + if (pSNAP_datalink) {
39 + unregister_snap_client(pSNAP_datalink);
40 + pSNAP_datalink = NULL;
41 + }
42 +
43 + if (p8022_datalink) {
44 + unregister_8022_client(p8022_datalink);
45 + p8022_datalink = NULL;
46 + }
47
48 dev_remove_pack(&ipx_8023_packet_type);
49 - destroy_8023_client(p8023_datalink);
50 - p8023_datalink = NULL;
51 + if (p8023_datalink) {
52 + destroy_8023_client(p8023_datalink);
53 + p8023_datalink = NULL;
54 + }
55
56 dev_remove_pack(&ipx_dix_packet_type);
57 - destroy_EII_client(pEII_datalink);
58 - pEII_datalink = NULL;
59 + if (pEII_datalink) {
60 + destroy_EII_client(pEII_datalink);
61 + pEII_datalink = NULL;
62 + }
63
64 proto_unregister(&ipx_proto);
65 sock_unregister(ipx_family_ops.family);