diff options
Diffstat (limited to 'net/rds/message.c')
| -rw-r--r-- | net/rds/message.c | 9 | 
1 files changed, 5 insertions, 4 deletions
diff --git a/net/rds/message.c b/net/rds/message.c index 1fd3d29023d..aba232f9f30 100644 --- a/net/rds/message.c +++ b/net/rds/message.c @@ -32,6 +32,7 @@   */  #include <linux/kernel.h>  #include <linux/slab.h> +#include <linux/export.h>  #include "rds.h" @@ -81,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)); @@ -196,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;  | 
