All of lore.kernel.org
 help / color / mirror / Atom feed
From: Laura Abbott <labbott@redhat.com>
To: Kees Cook <keescook@chromium.org>
Cc: Russell King - ARM Linux <linux@arm.linux.org.uk>,
	Laura Abbott <labbott@fedoraproject.org>,
	Catalin Marinas <catalin.marinas@arm.com>,
	Will Deacon <will.deacon@arm.com>,
	"linux-arm-kernel@lists.infradead.org" 
	<linux-arm-kernel@lists.infradead.org>,
	LKML <linux-kernel@vger.kernel.org>,
	Linux-MM <linux-mm@kvack.org>
Subject: Re: [PATCH] arm: Use kernel mm when updating section permissions
Date: Fri, 6 Nov 2015 16:20:26 -0800	[thread overview]
Message-ID: <563D43CA.9030405@redhat.com> (raw)
In-Reply-To: <CAGXu5jLf+BAhPvQihZ02jUpSE4woP-aMhfUQ6vobZBShrZXT4g@mail.gmail.com>

On 11/06/2015 03:49 PM, Kees Cook wrote:
> On Fri, Nov 6, 2015 at 3:41 PM, Laura Abbott <labbott@redhat.com> wrote:
>> On 11/06/2015 12:46 PM, Russell King - ARM Linux wrote:
>>>
>>> On Fri, Nov 06, 2015 at 10:44:32AM -0800, Laura Abbott wrote:
>>>>
>>>> with my test patch. I think setting both current->active_mm and &init_mm
>>>> is sufficient. Maybe explicitly setting swapper_pg_dir would be cleaner?
>>>
>>>
>>> Please, stop thinking like this.  If you're trying to change the kernel
>>> section mappings after threads have been spawned, you need to change
>>> them for _all_ threads, which means you need to change them for every
>>> page table that's in existence at that time - you can't do just one
>>> table and hope everyone updates, it doesn't work like that.
>>>
>>
>> That's a bad assumption assumption on my part based on what I was
>> observing. At the time of mark_rodata_ro, the only threads present
>> are kernel threads which aren't going to have task->mm. Only the
>> running thread is going to have active_mm. None of those are init_mm.
>> To be complete we need:
>>
>> - Update every task->mm for every thread in every process
>> - Update current->active_mm
>> - Update &init_mm explicitly
>>
>> All this would need to be done under stop_machine as well. Does that cover
>> everything or am I still off?
>
> I still think we need to find an earlier place to do this. :(
>
> -Kees
>

The problem is still the initmem. That needs to be writable and executable
during inittime and then have the page tables adjusted afterwards if it is
going to be freed back. I'll give this some more thought to see if I can
come up with something or if anyone else has another idea.

Thanks,
Laura

WARNING: multiple messages have this Message-ID (diff)
From: Laura Abbott <labbott@redhat.com>
To: Kees Cook <keescook@chromium.org>
Cc: Russell King - ARM Linux <linux@arm.linux.org.uk>,
	Laura Abbott <labbott@fedoraproject.org>,
	Catalin Marinas <catalin.marinas@arm.com>,
	Will Deacon <will.deacon@arm.com>,
	"linux-arm-kernel@lists.infradead.org"
	<linux-arm-kernel@lists.infradead.org>,
	LKML <linux-kernel@vger.kernel.org>,
	Linux-MM <linux-mm@kvack.org>
Subject: Re: [PATCH] arm: Use kernel mm when updating section permissions
Date: Fri, 6 Nov 2015 16:20:26 -0800	[thread overview]
Message-ID: <563D43CA.9030405@redhat.com> (raw)
In-Reply-To: <CAGXu5jLf+BAhPvQihZ02jUpSE4woP-aMhfUQ6vobZBShrZXT4g@mail.gmail.com>

On 11/06/2015 03:49 PM, Kees Cook wrote:
> On Fri, Nov 6, 2015 at 3:41 PM, Laura Abbott <labbott@redhat.com> wrote:
>> On 11/06/2015 12:46 PM, Russell King - ARM Linux wrote:
>>>
>>> On Fri, Nov 06, 2015 at 10:44:32AM -0800, Laura Abbott wrote:
>>>>
>>>> with my test patch. I think setting both current->active_mm and &init_mm
>>>> is sufficient. Maybe explicitly setting swapper_pg_dir would be cleaner?
>>>
>>>
>>> Please, stop thinking like this.  If you're trying to change the kernel
>>> section mappings after threads have been spawned, you need to change
>>> them for _all_ threads, which means you need to change them for every
>>> page table that's in existence at that time - you can't do just one
>>> table and hope everyone updates, it doesn't work like that.
>>>
>>
>> That's a bad assumption assumption on my part based on what I was
>> observing. At the time of mark_rodata_ro, the only threads present
>> are kernel threads which aren't going to have task->mm. Only the
>> running thread is going to have active_mm. None of those are init_mm.
>> To be complete we need:
>>
>> - Update every task->mm for every thread in every process
>> - Update current->active_mm
>> - Update &init_mm explicitly
>>
>> All this would need to be done under stop_machine as well. Does that cover
>> everything or am I still off?
>
> I still think we need to find an earlier place to do this. :(
>
> -Kees
>

The problem is still the initmem. That needs to be writable and executable
during inittime and then have the page tables adjusted afterwards if it is
going to be freed back. I'll give this some more thought to see if I can
come up with something or if anyone else has another idea.

Thanks,
Laura

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

WARNING: multiple messages have this Message-ID (diff)
From: labbott@redhat.com (Laura Abbott)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH] arm: Use kernel mm when updating section permissions
Date: Fri, 6 Nov 2015 16:20:26 -0800	[thread overview]
Message-ID: <563D43CA.9030405@redhat.com> (raw)
In-Reply-To: <CAGXu5jLf+BAhPvQihZ02jUpSE4woP-aMhfUQ6vobZBShrZXT4g@mail.gmail.com>

On 11/06/2015 03:49 PM, Kees Cook wrote:
> On Fri, Nov 6, 2015 at 3:41 PM, Laura Abbott <labbott@redhat.com> wrote:
>> On 11/06/2015 12:46 PM, Russell King - ARM Linux wrote:
>>>
>>> On Fri, Nov 06, 2015 at 10:44:32AM -0800, Laura Abbott wrote:
>>>>
>>>> with my test patch. I think setting both current->active_mm and &init_mm
>>>> is sufficient. Maybe explicitly setting swapper_pg_dir would be cleaner?
>>>
>>>
>>> Please, stop thinking like this.  If you're trying to change the kernel
>>> section mappings after threads have been spawned, you need to change
>>> them for _all_ threads, which means you need to change them for every
>>> page table that's in existence at that time - you can't do just one
>>> table and hope everyone updates, it doesn't work like that.
>>>
>>
>> That's a bad assumption assumption on my part based on what I was
>> observing. At the time of mark_rodata_ro, the only threads present
>> are kernel threads which aren't going to have task->mm. Only the
>> running thread is going to have active_mm. None of those are init_mm.
>> To be complete we need:
>>
>> - Update every task->mm for every thread in every process
>> - Update current->active_mm
>> - Update &init_mm explicitly
>>
>> All this would need to be done under stop_machine as well. Does that cover
>> everything or am I still off?
>
> I still think we need to find an earlier place to do this. :(
>
> -Kees
>

The problem is still the initmem. That needs to be writable and executable
during inittime and then have the page tables adjusted afterwards if it is
going to be freed back. I'll give this some more thought to see if I can
come up with something or if anyone else has another idea.

Thanks,
Laura

  reply	other threads:[~2015-11-07  0:20 UTC|newest]

Thread overview: 66+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-11-05  1:00 [PATCH] arm: Use kernel mm when updating section permissions Laura Abbott
2015-11-05  1:00 ` Laura Abbott
2015-11-05  1:00 ` Laura Abbott
2015-11-05  1:06 ` Kees Cook
2015-11-05  1:06   ` Kees Cook
2015-11-05  1:06   ` Kees Cook
2015-11-05  1:13   ` Kees Cook
2015-11-05  1:13     ` Kees Cook
2015-11-05  1:13     ` Kees Cook
2015-11-05  9:46 ` Russell King - ARM Linux
2015-11-05  9:46   ` Russell King - ARM Linux
2015-11-05  9:46   ` Russell King - ARM Linux
2015-11-05 16:20   ` Laura Abbott
2015-11-05 16:20     ` Laura Abbott
2015-11-05 16:20     ` Laura Abbott
2015-11-05 16:27     ` Russell King - ARM Linux
2015-11-05 16:27       ` Russell King - ARM Linux
2015-11-05 16:27       ` Russell King - ARM Linux
2015-11-06  1:05       ` Laura Abbott
2015-11-06  1:05         ` Laura Abbott
2015-11-06  1:05         ` Laura Abbott
2015-11-06  1:15         ` Kees Cook
2015-11-06  1:15           ` Kees Cook
2015-11-06  1:15           ` Kees Cook
2015-11-06 18:44           ` Laura Abbott
2015-11-06 18:44             ` Laura Abbott
2015-11-06 18:44             ` Laura Abbott
2015-11-06 19:08             ` Kees Cook
2015-11-06 19:08               ` Kees Cook
2015-11-06 19:08               ` Kees Cook
2015-11-06 19:12               ` Kees Cook
2015-11-06 19:12                 ` Kees Cook
2015-11-06 19:12                 ` Kees Cook
2015-11-06 20:11                 ` Kevin Hilman
2015-11-06 20:11                   ` Kevin Hilman
2015-11-06 20:11                   ` Kevin Hilman
2015-11-06 20:28                   ` Kees Cook
2015-11-06 20:28                     ` Kees Cook
2015-11-06 20:28                     ` Kees Cook
2015-11-06 21:06                     ` Kevin Hilman
2015-11-06 21:06                       ` Kevin Hilman
2015-11-06 21:06                       ` Kevin Hilman
2015-11-06 21:19                       ` Kees Cook
2015-11-06 21:19                         ` Kees Cook
2015-11-06 21:19                         ` Kees Cook
2015-11-06 22:37                         ` Kevin Hilman
2015-11-06 22:37                           ` Kevin Hilman
2015-11-06 22:37                           ` Kevin Hilman
2015-11-06 23:05                           ` Kevin Hilman
2015-11-06 23:05                             ` Kevin Hilman
2015-11-06 23:05                             ` Kevin Hilman
2015-11-06 23:47                           ` Kees Cook
2015-11-06 23:47                             ` Kees Cook
2015-11-06 23:47                             ` Kees Cook
2015-11-06 20:46             ` Russell King - ARM Linux
2015-11-06 20:46               ` Russell King - ARM Linux
2015-11-06 20:46               ` Russell King - ARM Linux
2015-11-06 23:41               ` Laura Abbott
2015-11-06 23:41                 ` Laura Abbott
2015-11-06 23:41                 ` Laura Abbott
2015-11-06 23:49                 ` Kees Cook
2015-11-06 23:49                   ` Kees Cook
2015-11-06 23:49                   ` Kees Cook
2015-11-07  0:20                   ` Laura Abbott [this message]
2015-11-07  0:20                     ` Laura Abbott
2015-11-07  0:20                     ` Laura Abbott

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=563D43CA.9030405@redhat.com \
    --to=labbott@redhat.com \
    --cc=catalin.marinas@arm.com \
    --cc=keescook@chromium.org \
    --cc=labbott@fedoraproject.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=linux@arm.linux.org.uk \
    --cc=will.deacon@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.