bridge: check kmem_cache_create() error
Subsystems (2)
PATCH 1/1 bridge: check kmem_cache_create() error
This patch checks kmem_cache_create() error and aborts loading module on failure.
Cc Stephen Hemminger <[email protected]>
Signed-off-by Akinobu Mita <[email protected]>
--- net/bridge/br.c | 7 ++++++- net/bridge/br_fdb.c | 4 +++- net/bridge/br_private.h | 2 +- 3 files changed, 10 insertions(+), 3 deletions(-)
net/bridge/br.c +6 -1
@@ -37,7 +37,9 @@ static int __init br_init(void)return -EADDRINUSE ; } -br_fdb_init (); + err =br_fdb_init (); +if (err) + goto err_out0; err =br_netfilter_init ();if (err)
@@ -63,7 +65,10 @@ err_out3: err_out2:br_netfilter_fini (); err_out1: +br_fdb_fini (); +err_out0:llc_sap_put (br_stp_sap); +return err; }
net/bridge/br_fdb.c +3 -1
@@ -27,12 +27,14 @@ static struct kmem_cache *br_fdb_cache _static int fdb_insert (struct net_bridge *br,struct net_bridge_port *source,const unsigned char *addr); -void __init br_fdb_init (void ) +int __init br_fdb_init (void ) { br_fdb_cache =kmem_cache_create ("bridge_fdb_cache" ,sizeof (struct net_bridge_fdb_entry ),0 ,SLAB_HWCACHE_ALIGN ,NULL ,NULL ); + +return br_fdb_cache ?0 : -ENOMEM ; } void __exit br_fdb_fini(void)
net/bridge/br_private.h +1 -1
@@ -133,7 +133,7 @@ extern void br_dev_setup(struct net_deviextern int br_dev_xmit (struct sk_buff *skb,struct net_device *dev);/* br_fdb.c */ -extern void br_fdb_init (void ); +extern int br_fdb_init (void );extern void br_fdb_fini (void );extern void br_fdb_changeaddr (struct net_bridge_port *p,const unsigned char *newaddr);
Quoted 6 lines · On Sat, 7 Apr 2007 18:57:07 +0900 Akinobu Mita <[email protected]> wrote:
This patch checks
kmem_cache_create()error and aborts loading module on failure.Cc Stephen Hemminger <[email protected]>Signed-off-by Akinobu Mita <[email protected]>
applied for 2.6.22 update bundle