On Fri, 22 Nov 2019 at 12:26, <glider@xxxxxxxxxx> wrote: > > Each struct page now contains pointers to two struct pages holding KMSAN > metadata (shadow and origins) for the original struct page. > > Each task_struct contains a struct kmsan_task_state used to track the > metadata of function parameters and return values for that task. > > Signed-off-by: Alexander Potapenko <glider@xxxxxxxxxx> > Cc: Jens Axboe <axboe@xxxxxxxxx> > Cc: Andy Lutomirski <luto@xxxxxxxxxx> > Cc: Vegard Nossum <vegard.nossum@xxxxxxxxxx> > Cc: Dmitry Vyukov <dvyukov@xxxxxxxxxx> > Cc: Christoph Hellwig <hch@xxxxxx> > Cc: linux-mm@xxxxxxxxx > --- > > Change-Id: Ie329527e558dd60307fb88b2da151f7f4db951ac > --- > include/linux/mm_types.h | 9 +++++++++ > include/linux/sched.h | 5 +++++ > 2 files changed, 14 insertions(+) > > diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h > index 2222fa795284..c87c5416a802 100644 > --- a/include/linux/mm_types.h > +++ b/include/linux/mm_types.h > @@ -216,6 +216,15 @@ struct page { > not kmapped, ie. highmem) */ > #endif /* WANT_PAGE_VIRTUAL */ > > +#ifdef CONFIG_KMSAN > + /* > + * Bits in struct page are scarce, so the LSB in *shadow is used to > + * indicate whether the page should be ignored by KMSAN or not. > + */ > + struct page *shadow; > + struct page *origin; > +#endif > + > #ifdef LAST_CPUPID_NOT_IN_PAGE_FLAGS > int _last_cpupid; > #endif > diff --git a/include/linux/sched.h b/include/linux/sched.h > index 72b20f33c56e..ba705f66f78c 100644 > --- a/include/linux/sched.h > +++ b/include/linux/sched.h > @@ -15,6 +15,7 @@ > #include <linux/sem.h> > #include <linux/shm.h> > #include <linux/kcov.h> > +#include <linux/kmsan.h> This file does not exist at this point in the series, and the build would fail for all configs. This can cause problems for 'git bisect' users etc. I would just merge this patch with patch 10. Thanks, -- Marco > #include <linux/mutex.h> > #include <linux/plist.h> > #include <linux/hrtimer.h> > @@ -1173,6 +1174,10 @@ struct task_struct { > unsigned int kasan_depth; > #endif > > +#ifdef CONFIG_KMSAN > + struct kmsan_task_state kmsan; > +#endif > + > #ifdef CONFIG_FUNCTION_GRAPH_TRACER > /* Index of current stored address in ret_stack: */ > int curr_ret_stack; > -- > 2.24.0.432.g9d3f5f5b63-goog >