Skip to content

Commit

Permalink
[IPX]: Fix NULL pointer dereference on ipx unload
Browse files Browse the repository at this point in the history
Fixes a null pointer dereference when unloading the ipx module.

On initialization of the ipx module, registering certain packet
types can fail. When this happens, unloading the module later
dereferences NULL pointers.  This patch fixes that. Please apply.

Signed-off-by: Jiri Bohac <jbohac@suse.cz>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Jiri Bohac authored and David S. Miller committed Feb 9, 2007
1 parent 42c05f6 commit 1539b98
Showing 1 changed file with 16 additions and 8 deletions.
24 changes: 16 additions & 8 deletions net/ipx/af_ipx.c
Original file line number Diff line number Diff line change
Expand Up @@ -2035,19 +2035,27 @@ static void __exit ipx_proto_finito(void)

ipxitf_cleanup();

unregister_snap_client(pSNAP_datalink);
pSNAP_datalink = NULL;
if (pSNAP_datalink) {
unregister_snap_client(pSNAP_datalink);
pSNAP_datalink = NULL;
}

unregister_8022_client(p8022_datalink);
p8022_datalink = NULL;
if (p8022_datalink) {
unregister_8022_client(p8022_datalink);
p8022_datalink = NULL;
}

dev_remove_pack(&ipx_8023_packet_type);
destroy_8023_client(p8023_datalink);
p8023_datalink = NULL;
if (p8023_datalink) {
destroy_8023_client(p8023_datalink);
p8023_datalink = NULL;
}

dev_remove_pack(&ipx_dix_packet_type);
destroy_EII_client(pEII_datalink);
pEII_datalink = NULL;
if (pEII_datalink) {
destroy_EII_client(pEII_datalink);
pEII_datalink = NULL;
}

proto_unregister(&ipx_proto);
sock_unregister(ipx_family_ops.family);
Expand Down

0 comments on commit 1539b98

Please sign in to comment.