Re: [PATCH] net: sock: validate data_len before allocating skb in sock_alloc_send_pskb()

David Miller
2012-05-30T07:02:13Z

From: Eric Dumazet <eric.dumazet@gmail.com>
Date: Wed, 30 May 2012 08:46:23 +0200

> Why doing this test in the while (1) block, it should be done before the
> loop...
>
> Or even in the caller, note net/unix/af_unix.c does this right.
>
> if (len > SKB_MAX_ALLOC)
> data_len = min_t(size_t,
> len - SKB_MAX_ALLOC,
> MAX_SKB_FRAGS * PAGE_SIZE);
>
> skb = sock_alloc_send_pskb(sk, len - data_len, data_len,
> msg->msg_flags & MSG_DONTWAIT, &err);

My impression is that the callers should be fixed to. It makes no sense
to penalize the call sites that get this right.

And yes, if we do check it in sock_alloc_send_pskb() it should be done
at function entry, not inside the loop.