All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jiri Olsa <olsajiri@gmail.com>
To: David Hildenbrand <david@redhat.com>
Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org,
	linux-perf-users@vger.kernel.org,
	Ryan Roberts <ryan.roberts@arm.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	Oleg Nesterov <oleg@redhat.com>,
	Peter Zijlstra <peterz@infradead.org>,
	Ingo Molnar <mingo@redhat.com>,
	Arnaldo Carvalho de Melo <acme@kernel.org>,
	Mark Rutland <mark.rutland@arm.com>,
	Namhyung Kim <namhyung@kernel.org>,
	Ian Rogers <irogers@google.com>,
	Adrian Hunter <adrian.hunter@intel.com>,
	bpf@vger.kernel.org
Subject: Re: [PATCH v1] uprobes: use pagesize-aligned virtual address when replacing pages
Date: Wed, 17 Jan 2024 15:02:20 +0100	[thread overview]
Message-ID: <Zafd7FkFdts6Ikp-@krava> (raw)
In-Reply-To: <20240115100731.91007-1-david@redhat.com>

cc-ing bpf list

jirka

On Mon, Jan 15, 2024 at 11:07:31AM +0100, David Hildenbrand wrote:
> uprobes passes an unaligned page mapping address to
> folio_add_new_anon_rmap(), which ends up triggering a VM_BUG_ON() we
> recently extended in commit 372cbd4d5a066 ("mm: non-pmd-mappable, large
> folios for folio_add_new_anon_rmap()").
> 
> Arguably, this is uprobes code doing something wrong; however,
> for the time being it would have likely worked in rmap code because
> __folio_set_anon() would set folio->index to the same value.
> 
> Looking at __replace_page(), we'd also pass slightly wrong values to
> mmu_notifier_range_init(), page_vma_mapped_walk(), flush_cache_page(),
> ptep_clear_flush() and set_pte_at_notify(). I suspect most of them are
> fine, but let's just mark the introducing commit as the one needed
> fixing. I don't think CC stable is warranted.
> 
> We'll add more sanity checks in rmap code separately, to make sure that
> we always get properly aligned addresses.
> 
> Reported-by: Jiri Olsa <jolsa@kernel.org>
> Closes: https://lkml.kernel.org/r/ZaMR2EWN-HvlCfUl@krava
> Fixes: c517ee744b96 ("uprobes: __replace_page() should not use page_address_in_vma()")
> Tested-by: Jiri Olsa <jolsa@kernel.org>
> Reviewed-by: Ryan Roberts <ryan.roberts@arm.com>
> Cc: Andrew Morton <akpm@linux-foundation.org>
> Cc: Oleg Nesterov <oleg@redhat.com>
> Cc: Peter Zijlstra <peterz@infradead.org>
> Cc: Ingo Molnar <mingo@redhat.com>
> Cc: Arnaldo Carvalho de Melo <acme@kernel.org>
> Cc: Mark Rutland <mark.rutland@arm.com>
> Cc: Alexander Shishkin
> Cc: Jiri Olsa <jolsa@kernel.org>
> Cc: Namhyung Kim <namhyung@kernel.org>
> Cc: Ian Rogers <irogers@google.com>
> Cc: Adrian Hunter <adrian.hunter@intel.com>
> Signed-off-by: David Hildenbrand <david@redhat.com>
> ---
>  kernel/events/uprobes.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/kernel/events/uprobes.c b/kernel/events/uprobes.c
> index 485bb0389b488..929e98c629652 100644
> --- a/kernel/events/uprobes.c
> +++ b/kernel/events/uprobes.c
> @@ -537,7 +537,7 @@ int uprobe_write_opcode(struct arch_uprobe *auprobe, struct mm_struct *mm,
>  		}
>  	}
>  
> -	ret = __replace_page(vma, vaddr, old_page, new_page);
> +	ret = __replace_page(vma, vaddr & PAGE_MASK, old_page, new_page);
>  	if (new_page)
>  		put_page(new_page);
>  put_old:
> -- 
> 2.43.0
> 
> 

      parent reply	other threads:[~2024-01-17 14:02 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-01-15 10:07 [PATCH v1] uprobes: use pagesize-aligned virtual address when replacing pages David Hildenbrand
2024-01-15 14:25 ` Oleg Nesterov
2024-01-17 14:02 ` Jiri Olsa [this message]

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=Zafd7FkFdts6Ikp-@krava \
    --to=olsajiri@gmail.com \
    --cc=acme@kernel.org \
    --cc=adrian.hunter@intel.com \
    --cc=akpm@linux-foundation.org \
    --cc=bpf@vger.kernel.org \
    --cc=david@redhat.com \
    --cc=irogers@google.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=linux-perf-users@vger.kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=mingo@redhat.com \
    --cc=namhyung@kernel.org \
    --cc=oleg@redhat.com \
    --cc=peterz@infradead.org \
    --cc=ryan.roberts@arm.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.