[rds-devel] [PATCH 3/5] RDS: Fix panic on unload

Li Yewang lyw at cn.fujitsu.com
Wed May 5 20:10:55 PDT 2010



Andy Grover さん wrote:
> Hi, please use rds-devel at oss.oracle.com for future questions.
> 
> This bug should be reproducible by sending data to the local ib-assigned
> ip. This will use the IB transport (not of the loopback transport) and
> will create both an active and passive connection on the machine.
> Attempting to rmmod the driver after this should reproduce the bug.

   Thanks for your reply.
   But I am new to rds, I can not understand what about ib-assigned and IB transport,
   Can you give me some detail reproduction guids.

> 
> Regards -- Andy
> 
> On 05/05/2010 06:26 PM, Li Yewang wrote:
>> hi Andy 
>>
>>    I want to reproduce the oops problem about you fixed.
>>  Do you have some reproduction program or reproduction steps about this oops problem?
>>  Thanks you.
>>
>> Andy Grover さん wrote:
>>> Remove explicit destruction of passive connection when destroying
>>> active end of the connection. The passive end is also on the
>>> device's connection list, and will thus be cleaned up properly.
>>> Panic was caused by trying to clean it up twice.
>>>
>>> Signed-off-by: Andy Grover <andy.grover at oracle.com>
>>> ---
>>>  net/rds/ib_rdma.c |    5 +----
>>>  net/rds/iw_rdma.c |    5 +----
>>>  2 files changed, 2 insertions(+), 8 deletions(-)
>>>
>>> diff --git a/net/rds/ib_rdma.c b/net/rds/ib_rdma.c
>>> index ef3ab5b..c5e9165 100644
>>> --- a/net/rds/ib_rdma.c
>>> +++ b/net/rds/ib_rdma.c
>>> @@ -187,11 +187,8 @@ void __rds_ib_destroy_conns(struct list_head *list, spinlock_t *list_lock)
>>>  	INIT_LIST_HEAD(list);
>>>  	spin_unlock_irq(list_lock);
>>>  
>>> -	list_for_each_entry_safe(ic, _ic, &tmp_list, ib_node) {
>>> -		if (ic->conn->c_passive)
>>> -			rds_conn_destroy(ic->conn->c_passive);
>>> +	list_for_each_entry_safe(ic, _ic, &tmp_list, ib_node)
>>>  		rds_conn_destroy(ic->conn);
>>> -	}
>>>  }
>>>  
>>>  struct rds_ib_mr_pool *rds_ib_create_mr_pool(struct rds_ib_device *rds_ibdev)
>>> diff --git a/net/rds/iw_rdma.c b/net/rds/iw_rdma.c
>>> index de4a1b1..b25d785 100644
>>> --- a/net/rds/iw_rdma.c
>>> +++ b/net/rds/iw_rdma.c
>>> @@ -245,11 +245,8 @@ void __rds_iw_destroy_conns(struct list_head *list, spinlock_t *list_lock)
>>>  	INIT_LIST_HEAD(list);
>>>  	spin_unlock_irq(list_lock);
>>>  
>>> -	list_for_each_entry_safe(ic, _ic, &tmp_list, iw_node) {
>>> -		if (ic->conn->c_passive)
>>> -			rds_conn_destroy(ic->conn->c_passive);
>>> +	list_for_each_entry_safe(ic, _ic, &tmp_list, iw_node)
>>>  		rds_conn_destroy(ic->conn);
>>> -	}
>>>  }
>>>  
>>>  static void rds_iw_set_scatterlist(struct rds_iw_scatterlist *sg,
>>
> 
> 
> 
> 

-- 
Regards
Li Yewang
--------------------------------------------------
Li Yewang
Development Dept.I
Nanjing Fujitsu Nanda Software Tech. Co., Ltd.(FNST)
8/F., Civil Defense Building, No.189 Guangzhou Road,
Nanjing, 210029, China 
TEL: +86+25-86630566-312
COINS: 79955-312
FAX: +86+25-83317685
MAIL: lyw at cn.fujitsu.com
--------------------------------------------------




More information about the rds-devel mailing list