diff options
Diffstat (limited to 'net/rds')
| -rw-r--r-- | net/rds/message.c | 4 | ||||
| -rw-r--r-- | net/rds/send.c | 2 | 
2 files changed, 4 insertions, 2 deletions
| diff --git a/net/rds/message.c b/net/rds/message.c index 071a261fdaab..4fc66ff0f1ec 100644 --- a/net/rds/message.c +++ b/net/rds/message.c @@ -180,6 +180,7 @@ void rds_message_put(struct rds_message *rm)  		rds_message_purge(rm);  		kfree(rm); +		rm = NULL;  	}  }  EXPORT_SYMBOL_GPL(rds_message_put); @@ -347,8 +348,9 @@ struct rds_message *rds_message_map_pages(unsigned long *page_addrs, unsigned in  	rm->data.op_nents = DIV_ROUND_UP(total_len, PAGE_SIZE);  	rm->data.op_sg = rds_message_alloc_sgs(rm, num_sgs);  	if (IS_ERR(rm->data.op_sg)) { +		void *err = ERR_CAST(rm->data.op_sg);  		rds_message_put(rm); -		return ERR_CAST(rm->data.op_sg); +		return err;  	}  	for (i = 0; i < rm->data.op_nents; ++i) { diff --git a/net/rds/send.c b/net/rds/send.c index 985d0b7713ac..fe5264b9d4b3 100644 --- a/net/rds/send.c +++ b/net/rds/send.c @@ -665,7 +665,7 @@ static void rds_send_remove_from_sock(struct list_head *messages, int status)  unlock_and_drop:  		spin_unlock_irqrestore(&rm->m_rs_lock, flags);  		rds_message_put(rm); -		if (was_on_sock) +		if (was_on_sock && rm)  			rds_message_put(rm);  	} |