On Mon, Jun 30, 2014 at 5:50 PM, Alex Elder <[email protected]> wrote:
> On 06/25/2014 12:16 PM, Ilya Dryomov wrote:
>> Linger requests that have not yet been registered should not be
>> unregistered by __unregister_linger_request().  This messes up ref
>> count and leads to use-after-free.
>>
>> Signed-off-by: Ilya Dryomov <[email protected]>
>> ---
>>  net/ceph/osd_client.c |   15 +++++++++++++--
>>  1 file changed, 13 insertions(+), 2 deletions(-)
>>
>> diff --git a/net/ceph/osd_client.c b/net/ceph/osd_client.c
>> index a9b7ea7bfdc6..12ec553a7e76 100644
>> --- a/net/ceph/osd_client.c
>> +++ b/net/ceph/osd_client.c
>> @@ -1248,7 +1248,9 @@ static void __cancel_request(struct ceph_osd_request 
>> *req)
>>  static void __register_linger_request(struct ceph_osd_client *osdc,
>>                                   struct ceph_osd_request *req)
>>  {
>> -     dout("__register_linger_request %p\n", req);
>> +     dout("%s %p tid %llu\n", __func__, req, req->r_tid);
>> +     WARN_ON(!req->r_linger);
>> +
>>       ceph_osdc_get_request(req);
>>       list_add_tail(&req->r_linger_item, &osdc->req_linger);
>>       if (req->r_osd)
>> @@ -1259,8 +1261,17 @@ static void __register_linger_request(struct 
>> ceph_osd_client *osdc,
>>  static void __unregister_linger_request(struct ceph_osd_client *osdc,
>>                                       struct ceph_osd_request *req)
>>  {
>> -     dout("__unregister_linger_request %p\n", req);
>> +     WARN_ON(!req->r_linger);
>
>
> I just noticed something.  ceph_osdc_unregister_linger_request()
> clears req->r_linger before calling __unregister_linger_request(),
> which means this warning must be tripping a lot...
>
> Just delete that assignment in ceph_osdc_unregister_linger_request()
> as part of this commit.

ceph_osdc_unregister_linger_request() is removed entirely later in the
series.

Thanks,

                Ilya
--
To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to