Re: [PATCH] driver: tg3: fix potential UAF in tigon3_dma_hwbug_workaround()
From: David Miller
Date: Sun Jan 19 2020 - 06:31:38 EST
From: Gen Zhang <blackgod016574@xxxxxxxxx>
Date: Thu, 16 Jan 2020 11:30:44 +0800
> In tigon3_dma_hwbug_workaround(), pskb is first stored in skb. And this
> function is to store new_skb into pskb at the end. However, in the error
> paths when new_skb is freed by dev_kfree_skb_any(), stroing new_skb to pskb
> should be prevented.
>
> And freeing skb with dev_consume_skb_any() should be executed after storing
> new_skb to pskb, because freeing skb will free pskb (alias).
>
> Signed-off-by: Gen Zhang <blackgod016574@xxxxxxxxx>
There are no bugs here.
The caller never references "*pskb" when an error is returned. So it is
safe to store any value whatsoever into that pointer.
'skb' never changes it's value even if we store something into *pskb
because we've loaded it into a local variable. So it is always safe to
call dev_consume_skb_any() on 'skb' in any order with respect to that
assignment.
I'm not applying this until you can show a real bug resulting from
the current code, and if so you'll need to add that explanation to
your commit message.
Thanks.