Re: net: sctp: possible dereference after freeing

From: Vlad Yasevich
Date: Sat Oct 19 2013 - 13:37:00 EST




On Oct 19, 2013, at 7:49 AM, Geyslan GregÃrio Bem <geyslan@xxxxxxxxx> wrote:

> 2013/10/19 Geyslan GregÃrio Bem <geyslan@xxxxxxxxx>:
>> Hi maintainers,
>>
>> I would like to know if these are catches:
>>
>> /net/sctp/endpointola.c (281)
>> static void sctp_endpoint_destroy(struct sctp_endpoint *ep)
>> {
>> struct sock *sk;
>> ...
>> kfree(ep);
>> SCTP_DBG_OBJCNT_DEC(ep);
>> }
>>
>> The 'ep' object counter is being decremented?! Is the kfree to be there indeed?
>> Let me know what was intended here.
>>
>> Same here:
>> /net/sctp/endpointola.c (165)
>> static void sctp_transport_destroy_rcu(struct rcu_head *head)
>> {
>> struct sctp_transport *transport;
>> ...
>> kfree(transport);
>> SCTP_DBG_OBJCNT_DEC(transport);
>> }
>>
>> Regards,
>>
>> Geyslan GregÃrio Bem
>> hackingbits.com
>
> Oops. I got it. ;)
>
> extern atomic_t sctp_dbg_objcnt_ep;
> http://lxr.free-electrons.com/source/include/net/sctp/sctp.h#L269
> extern atomic_t sctp_dbg_objcnt_transport;
> http://lxr.free-electrons.com/source/arch/x86/include/asm/atomic.h#L105
>
> Cheers.

There is no reference here since the macro turns variable name to string using ## name.
So the order doesn't matter really.

-vlad --
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/