All of lore.kernel.org
 help / color / mirror / Atom feed
From: Florian Westphal <fw@strlen.de>
To: Ido Schimmel <idosch@idosch.org>
Cc: Aleksandr Nogikh <aleksandrnogikh@gmail.com>,
	fw@strlen.de, davem@davemloft.net, kuba@kernel.org,
	johannes@sipsolutions.net, edumazet@google.com,
	andreyknvl@google.com, dvyukov@google.com, elver@google.com,
	linux-kernel@vger.kernel.org, netdev@vger.kernel.org,
	linux-wireless@vger.kernel.org, willemdebruijn.kernel@gmail.com,
	Aleksandr Nogikh <nogikh@google.com>,
	Willem de Bruijn <willemb@google.com>
Subject: Re: [PATCH v5 2/3] net: add kcov handle to skb extensions
Date: Sat, 21 Nov 2020 17:52:27 +0100	[thread overview]
Message-ID: <20201121165227.GT15137@breakpoint.cc> (raw)
In-Reply-To: <20201121160941.GA485907@shredder.lan>

Ido Schimmel <idosch@idosch.org> wrote:
> On Thu, Oct 29, 2020 at 05:36:19PM +0000, Aleksandr Nogikh wrote:
> > From: Aleksandr Nogikh <nogikh@google.com>
> > 
> > Remote KCOV coverage collection enables coverage-guided fuzzing of the
> > code that is not reachable during normal system call execution. It is
> > especially helpful for fuzzing networking subsystems, where it is
> > common to perform packet handling in separate work queues even for the
> > packets that originated directly from the user space.
> > 
> > Enable coverage-guided frame injection by adding kcov remote handle to
> > skb extensions. Default initialization in __alloc_skb and
> > __build_skb_around ensures that no socket buffer that was generated
> > during a system call will be missed.
> > 
> > Code that is of interest and that performs packet processing should be
> > annotated with kcov_remote_start()/kcov_remote_stop().
> > 
> > An alternative approach is to determine kcov_handle solely on the
> > basis of the device/interface that received the specific socket
> > buffer. However, in this case it would be impossible to distinguish
> > between packets that originated during normal background network
> > processes or were intentionally injected from the user space.
> > 
> > Signed-off-by: Aleksandr Nogikh <nogikh@google.com>
> > Acked-by: Willem de Bruijn <willemb@google.com>
> 
> [...]
> 
> > @@ -249,6 +249,9 @@ struct sk_buff *__alloc_skb(unsigned int size, gfp_t gfp_mask,
> >  
> >  		fclones->skb2.fclone = SKB_FCLONE_CLONE;
> >  	}
> > +
> > +	skb_set_kcov_handle(skb, kcov_common_handle());
> 
> Hi,
> 
> This causes skb extensions to be allocated for the allocated skb, but
> there are instances that blindly overwrite 'skb->extensions' by invoking
> skb_copy_header() after __alloc_skb(). For example, skb_copy(),
> __pskb_copy_fclone() and skb_copy_expand(). This results in the skb
> extensions being leaked [1].

[..]
> Other suggestions?

Aleksandr, why was this made into an skb extension in the first place?

AFAIU this feature is usually always disabled at build time.
For debug builds (test farm /debug kernel etc) its always needed.

If thats the case this u64 should be an sk_buff member, not an
extension.

  reply	other threads:[~2020-11-21 16:53 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-10-29 17:36 [PATCH v5 0/3] net, mac80211, kernel: enable KCOV remote coverage collection for 802.11 frame handling Aleksandr Nogikh
2020-10-29 17:36 ` [PATCH v5 1/3] kernel: make kcov_common_handle consider the current context Aleksandr Nogikh
2020-10-29 17:36 ` [PATCH v5 2/3] net: add kcov handle to skb extensions Aleksandr Nogikh
2020-11-21 16:09   ` Ido Schimmel
2020-11-21 16:52     ` Florian Westphal [this message]
2020-11-21 17:39       ` Johannes Berg
2020-11-21 18:06       ` Jakub Kicinski
2020-11-21 18:12         ` Johannes Berg
2020-11-21 18:35           ` Jakub Kicinski
2020-11-21 19:30             ` Johannes Berg
2020-11-21 20:55               ` Jakub Kicinski
2020-11-21 20:58                 ` Johannes Berg
2020-11-21 21:02                   ` Jakub Kicinski
2020-11-25 16:30                     ` Marco Elver
2020-12-01  1:52     ` Jakub Kicinski
2020-12-01  7:35       ` Ido Schimmel
2020-12-01 16:43         ` Jakub Kicinski
2020-10-29 17:36 ` [PATCH v5 3/3] mac80211: add KCOV remote annotations to incoming frame processing Aleksandr Nogikh
2020-10-29 17:44   ` Johannes Berg
2020-10-29 18:00     ` Marco Elver
2020-10-29 19:08       ` Andrey Konovalov
2020-11-03  3:00 ` [PATCH v5 0/3] net, mac80211, kernel: enable KCOV remote coverage collection for 802.11 frame handling Jakub Kicinski

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20201121165227.GT15137@breakpoint.cc \
    --to=fw@strlen.de \
    --cc=aleksandrnogikh@gmail.com \
    --cc=andreyknvl@google.com \
    --cc=davem@davemloft.net \
    --cc=dvyukov@google.com \
    --cc=edumazet@google.com \
    --cc=elver@google.com \
    --cc=idosch@idosch.org \
    --cc=johannes@sipsolutions.net \
    --cc=kuba@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-wireless@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=nogikh@google.com \
    --cc=willemb@google.com \
    --cc=willemdebruijn.kernel@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.