Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 87a596e0 authored by Akinobu Mita's avatar Akinobu Mita Committed by David S. Miller
Browse files

bridge: check kmem_cache_create() error



This patch checks kmem_cache_create() error and aborts loading module
on failure.

Signed-off-by: default avatarAkinobu Mita <akinobu.mita@gmail.com>
Signed-off-by: default avatarStephen Hemminger <shemminger@linux-foundation.org>
parent ffe1d49c
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -37,7 +37,9 @@ static int __init br_init(void)
		return -EADDRINUSE;
	}

	br_fdb_init();
	err = br_fdb_init();
	if (err)
		goto err_out1;

	err = br_netfilter_init();
	if (err)
+5 −1
Original line number Diff line number Diff line
@@ -31,13 +31,17 @@ static int fdb_insert(struct net_bridge *br, struct net_bridge_port *source,

static u32 fdb_salt __read_mostly;

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);
	if (!br_fdb_cache)
		return -ENOMEM;

	get_random_bytes(&fdb_salt, sizeof(fdb_salt));
	return 0;
}

void __exit br_fdb_fini(void)
+1 −1
Original line number Diff line number Diff line
@@ -141,7 +141,7 @@ extern void br_dev_setup(struct net_device *dev);
extern 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_flush(struct net_bridge *br);
extern void br_fdb_changeaddr(struct net_bridge_port *p,