All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Rafael J. Wysocki" <rafael@kernel.org>
To: Thomas Garnier <thgarnie@google.com>
Cc: "Rafael J. Wysocki" <rafael@kernel.org>,
	Jiri Kosina <jikos@kernel.org>, Borislav Petkov <bp@suse.de>,
	"Rafael J. Wysocki" <rjw@rjwysocki.net>,
	Linux PM list <linux-pm@vger.kernel.org>,
	"the arch/x86 maintainers" <x86@kernel.org>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	Yinghai Lu <yinghai@kernel.org>,
	Thomas Gleixner <tglx@linutronix.de>,
	Ingo Molnar <mingo@redhat.com>, "H . Peter Anvin" <hpa@zytor.com>,
	Kees Cook <keescook@chromium.org>, Pavel Machek <pavel@ucw.cz>,
	Kernel Hardening <kernel-hardening@lists.openwall.com>
Subject: Re: [Resend][PATCH] x86/power/64: Always create temporary identity mapping correctly
Date: Thu, 11 Aug 2016 03:35:39 +0200	[thread overview]
Message-ID: <CAJZ5v0hVNh7oA+1MvDbx-GY+nd82Whb4=7AT+e=LicOxs0qzkg@mail.gmail.com> (raw)
In-Reply-To: <CAJcbSZGCL90OygKhSsox_xzQ0xmNV=Jv2WnVT8vEV7UcqgKWTw@mail.gmail.com>

On Thu, Aug 11, 2016 at 3:17 AM, Thomas Garnier <thgarnie@google.com> wrote:
> On Wed, Aug 10, 2016 at 5:35 PM, Rafael J. Wysocki <rafael@kernel.org> wrote:
>> On Wed, Aug 10, 2016 at 11:59 PM, Jiri Kosina <jikos@kernel.org> wrote:
>>> On Wed, 10 Aug 2016, Rafael J. Wysocki wrote:
>>>
>>>> So I used your .config to generate one for my test machine and with
>>>> that I can reproduce.
>>>
>>> Was that the config I've sent, or did Boris provide one as well? Which one
>>> are you able to reproduce with please?
>>
>> It's the Boris' one.
>>
>> Moreover, I have found the options that make the difference: unsetting
>> CONFIG_PROVE_LOCKING and CONFIG_DEBUG_LOCK_ALLOC (which also will
>> unset CONFIG_LOCKDEP AFAICS) in it makes hibernation work again with
>> CONFIG_RANDOMIZE_MEMORY set and with the $subject patch applied.
>>
>> Unbelievable, but that's what I'm seeing.
>
> Nice find!
>
>>
>> Now, that leads to a few questions:
>>
>> - How does lockdep change the picture so it matters for hibernation?
>> - Why is hibernation the only piece that's affected?
>> - Why is RANDOMIZE_MEMORY necessary to make this breakage show up?
>>
>> Thomas, any ideas?
>
> No idea so far. I will investigate though.
>
> We had an unrelated issue with CONFIG_DEBUG_PAGEALLOC on early boot. I
> don't think it was related because it was on early boot and with
> certain e820 memory layout (and PUD randomization that I disabled on
> the previous patch test). The fix is on tip:
> http://git.kernel.org/cgit/linux/kernel/git/tip/tip.git/commit/?id=fb754f958f8e46202c1efd7f66d5b3db1208117d

Well, I don't think this is related.

In the meantime, I went back to my original .config and verified that
setting CONFIG_DEBUG_LOCK_ALLOC in it caused hibernation to fail (with
CONFIG_RANDOMIZE_MEMORY set and with the $subject patch applied), so
this really matters somehow.

Besides, now that I have a reproducer, I can check various other
things and for example this change (sorry for broken whitespace):

Index: linux-pm/arch/x86/mm/kaslr.c
===================================================================
--- linux-pm.orig/arch/x86/mm/kaslr.c
+++ linux-pm/arch/x86/mm/kaslr.c
@@ -122,7 +122,7 @@ void __init kernel_randomize_memory(void
         prandom_bytes_state(&rand_state, &rand, sizeof(rand));
         entropy = (rand % (entropy + 1)) & PUD_MASK;
         vaddr += entropy;
-        *kaslr_regions[i].base = vaddr;
+        *kaslr_regions[i].base += PUD_SIZE;

         /*
          * Jump the region and add a minimum padding based on

makes hibernation work for me again in the above configuration.  To
me, this means that the $subject patch works as expected and the
problem really is related to the vaddr value being too big.

Thanks,
Rafael

WARNING: multiple messages have this Message-ID (diff)
From: "Rafael J. Wysocki" <rafael@kernel.org>
To: Thomas Garnier <thgarnie@google.com>
Cc: "Rafael J. Wysocki" <rafael@kernel.org>,
	Jiri Kosina <jikos@kernel.org>, Borislav Petkov <bp@suse.de>,
	"Rafael J. Wysocki" <rjw@rjwysocki.net>,
	Linux PM list <linux-pm@vger.kernel.org>,
	the arch/x86 maintainers <x86@kernel.org>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	Yinghai Lu <yinghai@kernel.org>,
	Thomas Gleixner <tglx@linutronix.de>,
	Ingo Molnar <mingo@redhat.com>, "H . Peter Anvin" <hpa@zytor.com>,
	Kees Cook <keescook@chromium.org>, Pavel Machek <pavel@ucw.cz>,
	Kernel Hardening <kernel-hardening@lists.openwall.com>
Subject: [kernel-hardening] Re: [Resend][PATCH] x86/power/64: Always create temporary identity mapping correctly
Date: Thu, 11 Aug 2016 03:35:39 +0200	[thread overview]
Message-ID: <CAJZ5v0hVNh7oA+1MvDbx-GY+nd82Whb4=7AT+e=LicOxs0qzkg@mail.gmail.com> (raw)
In-Reply-To: <CAJcbSZGCL90OygKhSsox_xzQ0xmNV=Jv2WnVT8vEV7UcqgKWTw@mail.gmail.com>

On Thu, Aug 11, 2016 at 3:17 AM, Thomas Garnier <thgarnie@google.com> wrote:
> On Wed, Aug 10, 2016 at 5:35 PM, Rafael J. Wysocki <rafael@kernel.org> wrote:
>> On Wed, Aug 10, 2016 at 11:59 PM, Jiri Kosina <jikos@kernel.org> wrote:
>>> On Wed, 10 Aug 2016, Rafael J. Wysocki wrote:
>>>
>>>> So I used your .config to generate one for my test machine and with
>>>> that I can reproduce.
>>>
>>> Was that the config I've sent, or did Boris provide one as well? Which one
>>> are you able to reproduce with please?
>>
>> It's the Boris' one.
>>
>> Moreover, I have found the options that make the difference: unsetting
>> CONFIG_PROVE_LOCKING and CONFIG_DEBUG_LOCK_ALLOC (which also will
>> unset CONFIG_LOCKDEP AFAICS) in it makes hibernation work again with
>> CONFIG_RANDOMIZE_MEMORY set and with the $subject patch applied.
>>
>> Unbelievable, but that's what I'm seeing.
>
> Nice find!
>
>>
>> Now, that leads to a few questions:
>>
>> - How does lockdep change the picture so it matters for hibernation?
>> - Why is hibernation the only piece that's affected?
>> - Why is RANDOMIZE_MEMORY necessary to make this breakage show up?
>>
>> Thomas, any ideas?
>
> No idea so far. I will investigate though.
>
> We had an unrelated issue with CONFIG_DEBUG_PAGEALLOC on early boot. I
> don't think it was related because it was on early boot and with
> certain e820 memory layout (and PUD randomization that I disabled on
> the previous patch test). The fix is on tip:
> http://git.kernel.org/cgit/linux/kernel/git/tip/tip.git/commit/?id=fb754f958f8e46202c1efd7f66d5b3db1208117d

Well, I don't think this is related.

In the meantime, I went back to my original .config and verified that
setting CONFIG_DEBUG_LOCK_ALLOC in it caused hibernation to fail (with
CONFIG_RANDOMIZE_MEMORY set and with the $subject patch applied), so
this really matters somehow.

Besides, now that I have a reproducer, I can check various other
things and for example this change (sorry for broken whitespace):

Index: linux-pm/arch/x86/mm/kaslr.c
===================================================================
--- linux-pm.orig/arch/x86/mm/kaslr.c
+++ linux-pm/arch/x86/mm/kaslr.c
@@ -122,7 +122,7 @@ void __init kernel_randomize_memory(void
         prandom_bytes_state(&rand_state, &rand, sizeof(rand));
         entropy = (rand % (entropy + 1)) & PUD_MASK;
         vaddr += entropy;
-        *kaslr_regions[i].base = vaddr;
+        *kaslr_regions[i].base += PUD_SIZE;

         /*
          * Jump the region and add a minimum padding based on

makes hibernation work for me again in the above configuration.  To
me, this means that the $subject patch works as expected and the
problem really is related to the vaddr value being too big.

Thanks,
Rafael

  reply	other threads:[~2016-08-11  1:35 UTC|newest]

Thread overview: 74+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-08-08 13:31 [Resend][PATCH] x86/power/64: Always create temporary identity mapping correctly Rafael J. Wysocki
2016-08-08 13:31 ` [kernel-hardening] " Rafael J. Wysocki
2016-08-08 13:40 ` Borislav Petkov
2016-08-08 13:40   ` [kernel-hardening] " Borislav Petkov
2016-08-08 13:54   ` Rafael J. Wysocki
2016-08-08 13:54     ` [kernel-hardening] " Rafael J. Wysocki
2016-08-08 18:00     ` Thomas Garnier
2016-08-08 18:00       ` [kernel-hardening] " Thomas Garnier
2016-08-08 20:01       ` Rafael J. Wysocki
2016-08-08 20:01         ` [kernel-hardening] " Rafael J. Wysocki
2016-08-09  7:02     ` Borislav Petkov
2016-08-09  7:02       ` [kernel-hardening] " Borislav Petkov
2016-08-09 11:47       ` Rafael J. Wysocki
2016-08-09 11:47         ` [kernel-hardening] " Rafael J. Wysocki
2016-08-09  9:23 ` Jiri Kosina
2016-08-09  9:23   ` [kernel-hardening] " Jiri Kosina
2016-08-09 11:56   ` Rafael J. Wysocki
2016-08-09 11:56     ` [kernel-hardening] " Rafael J. Wysocki
2016-08-09 12:58     ` Jiri Kosina
2016-08-09 12:58       ` [kernel-hardening] " Jiri Kosina
2016-08-09 13:30       ` Jiri Kosina
2016-08-09 13:30         ` [kernel-hardening] " Jiri Kosina
2016-08-09 15:00         ` Thomas Garnier
2016-08-09 15:00           ` [kernel-hardening] " Thomas Garnier
2016-08-09 15:05           ` Jiri Kosina
2016-08-09 15:05             ` [kernel-hardening] " Jiri Kosina
2016-08-09 16:18             ` Rafael J. Wysocki
2016-08-09 16:18               ` [kernel-hardening] " Rafael J. Wysocki
2016-08-09 16:27               ` Thomas Garnier
2016-08-09 16:27                 ` [kernel-hardening] " Thomas Garnier
2016-08-09 20:50                 ` Rafael J. Wysocki
2016-08-09 20:50                   ` [kernel-hardening] " Rafael J. Wysocki
2016-08-09 20:02               ` Jiri Kosina
2016-08-09 20:02                 ` [kernel-hardening] " Jiri Kosina
2016-08-09 21:23                 ` Rafael J. Wysocki
2016-08-09 21:23                   ` [kernel-hardening] " Rafael J. Wysocki
2016-08-10  0:21                   ` Rafael J. Wysocki
2016-08-10  0:21                     ` [kernel-hardening] " Rafael J. Wysocki
2016-08-10  7:50                     ` Jiri Kosina
2016-08-10  7:50                       ` [kernel-hardening] " Jiri Kosina
2016-08-10 13:11                       ` Rafael J. Wysocki
2016-08-10 13:11                         ` [kernel-hardening] " Rafael J. Wysocki
2016-08-10 13:18                         ` Jiri Kosina
2016-08-10 13:18                           ` [kernel-hardening] " Jiri Kosina
2016-08-10 14:42                           ` Thomas Garnier
2016-08-10 14:42                             ` [kernel-hardening] " Thomas Garnier
2016-08-10 14:59                             ` Jiri Kosina
2016-08-10 14:59                               ` [kernel-hardening] " Jiri Kosina
2016-08-10 16:35                               ` Borislav Petkov
2016-08-10 16:35                                 ` [kernel-hardening] " Borislav Petkov
2016-08-10 16:44                                 ` Thomas Garnier
2016-08-10 16:44                                   ` [kernel-hardening] " Thomas Garnier
2016-08-10 21:52                                   ` Jiri Kosina
2016-08-10 21:52                                     ` [kernel-hardening] " Jiri Kosina
2016-08-10 21:58                                     ` Rafael J. Wysocki
2016-08-10 21:58                                       ` [kernel-hardening] " Rafael J. Wysocki
2016-08-10 20:56                                 ` Rafael J. Wysocki
2016-08-10 20:56                                   ` [kernel-hardening] " Rafael J. Wysocki
2016-08-10 21:13                                   ` Rafael J. Wysocki
2016-08-10 21:13                                     ` [kernel-hardening] " Rafael J. Wysocki
2016-08-10 21:59                                     ` Jiri Kosina
2016-08-10 21:59                                       ` [kernel-hardening] " Jiri Kosina
2016-08-11  0:35                                       ` Rafael J. Wysocki
2016-08-11  0:35                                         ` [kernel-hardening] " Rafael J. Wysocki
2016-08-11  1:17                                         ` Thomas Garnier
2016-08-11  1:17                                           ` [kernel-hardening] " Thomas Garnier
2016-08-11  1:35                                           ` Rafael J. Wysocki [this message]
2016-08-11  1:35                                             ` Rafael J. Wysocki
2016-08-11 18:47                                             ` Thomas Garnier
2016-08-11 18:47                                               ` [kernel-hardening] " Thomas Garnier
2016-08-11 21:33                                               ` Rafael J. Wysocki
2016-08-11 21:33                                                 ` [kernel-hardening] " Rafael J. Wysocki
2016-08-11 21:32                                                 ` Thomas Garnier
2016-08-11 21:32                                                   ` [kernel-hardening] " Thomas Garnier

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='CAJZ5v0hVNh7oA+1MvDbx-GY+nd82Whb4=7AT+e=LicOxs0qzkg@mail.gmail.com' \
    --to=rafael@kernel.org \
    --cc=bp@suse.de \
    --cc=hpa@zytor.com \
    --cc=jikos@kernel.org \
    --cc=keescook@chromium.org \
    --cc=kernel-hardening@lists.openwall.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=mingo@redhat.com \
    --cc=pavel@ucw.cz \
    --cc=rjw@rjwysocki.net \
    --cc=tglx@linutronix.de \
    --cc=thgarnie@google.com \
    --cc=x86@kernel.org \
    --cc=yinghai@kernel.org \
    /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.