X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=net%2Frds%2Fmessage.c;h=aba232f9f3081968081edb0ed6ece382e954b653;hb=5abb0029c8df0312c6095e7a336d2b80ea358e77;hp=f0a4658f3273e2e87bac1ae88058e1209ed3332a;hpb=9785dbdf265ddc47d5c88267d89a97648c0dc14b;p=~andy%2Flinux diff --git a/net/rds/message.c b/net/rds/message.c index f0a4658f327..aba232f9f30 100644 --- a/net/rds/message.c +++ b/net/rds/message.c @@ -82,10 +82,7 @@ static void rds_message_purge(struct rds_message *rm) void rds_message_put(struct rds_message *rm) { rdsdebug("put rm %p ref %d\n", rm, atomic_read(&rm->m_refcount)); - if (atomic_read(&rm->m_refcount) == 0) { -printk(KERN_CRIT "danger refcount zero on %p\n", rm); -WARN_ON(1); - } + WARN(!atomic_read(&rm->m_refcount), "danger refcount zero on %p\n", rm); if (atomic_dec_and_test(&rm->m_refcount)) { BUG_ON(!list_empty(&rm->m_sock_item)); BUG_ON(!list_empty(&rm->m_conn_item)); @@ -197,6 +194,9 @@ struct rds_message *rds_message_alloc(unsigned int extra_len, gfp_t gfp) { struct rds_message *rm; + if (extra_len > KMALLOC_MAX_SIZE - sizeof(struct rds_message)) + return NULL; + rm = kzalloc(sizeof(struct rds_message) + extra_len, gfp); if (!rm) goto out;