X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=net%2Fdecnet%2Fdn_table.c;h=0ebc46af1bddbb55a0b7c4aa3573339fd596d7ae;hb=9464c7cf61b9433057924c36e6e02f303a00e768;hp=e926c952e3632617812e1c1d3eec192cfe2dfeda;hpb=41689045f6a3cbe0550e1d34e9cc20d2e8c432ba;p=linux-2.6.git diff --git a/net/decnet/dn_table.c b/net/decnet/dn_table.c index e926c952e..0ebc46af1 100644 --- a/net/decnet/dn_table.c +++ b/net/decnet/dn_table.c @@ -12,6 +12,7 @@ * Changes: * */ +#include #include #include #include @@ -158,10 +159,12 @@ static void dn_rehash_zone(struct dn_zone *dz) break; } - ht = kcalloc(new_divisor, sizeof(struct dn_fib_node*), GFP_KERNEL); + ht = kmalloc(new_divisor*sizeof(struct dn_fib_node*), GFP_KERNEL); + if (ht == NULL) return; + memset(ht, 0, new_divisor*sizeof(struct dn_fib_node *)); write_lock_bh(&dn_fib_tables_lock); old_ht = dz->dz_hash; dz->dz_hash = ht; @@ -182,10 +185,11 @@ static void dn_free_node(struct dn_fib_node *f) static struct dn_zone *dn_new_zone(struct dn_hash *table, int z) { int i; - struct dn_zone *dz = kzalloc(sizeof(struct dn_zone), GFP_KERNEL); + struct dn_zone *dz = kmalloc(sizeof(struct dn_zone), GFP_KERNEL); if (!dz) return NULL; + memset(dz, 0, sizeof(struct dn_zone)); if (z) { dz->dz_divisor = 16; dz->dz_hashmask = 0x0F; @@ -194,12 +198,14 @@ static struct dn_zone *dn_new_zone(struct dn_hash *table, int z) dz->dz_hashmask = 0; } - dz->dz_hash = kcalloc(dz->dz_divisor, sizeof(struct dn_fib_node *), GFP_KERNEL); + dz->dz_hash = kmalloc(dz->dz_divisor*sizeof(struct dn_fib_node *), GFP_KERNEL); + if (!dz->dz_hash) { kfree(dz); return NULL; } + memset(dz->dz_hash, 0, dz->dz_divisor*sizeof(struct dn_fib_node*)); dz->dz_order = z; dz->dz_mask = dnet_make_mask(z);