All of lore.kernel.org
 help / color / mirror / Atom feed
From: Kees Cook <keescook@chromium.org>
To: nathanl@linux.ibm.com
Cc: Michael Ellerman <mpe@ellerman.id.au>,
	Nicholas Piggin <npiggin@gmail.com>,
	Christophe Leroy <christophe.leroy@csgroup.eu>,
	linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org,
	linux-hardening@vger.kernel.org
Subject: Re: [PATCH v2] powerpc/rtas_flash: allow user copy to flash block cache objects
Date: Wed, 16 Aug 2023 14:07:08 -0700	[thread overview]
Message-ID: <202308161407.48AAE65CB@keescook> (raw)
In-Reply-To: <20230810-rtas-flash-vs-hardened-usercopy-v2-1-dcf63793a938@linux.ibm.com>

On Thu, Aug 10, 2023 at 10:37:55PM -0500, Nathan Lynch via B4 Relay wrote:
> From: Nathan Lynch <nathanl@linux.ibm.com>
> 
> With hardened usercopy enabled (CONFIG_HARDENED_USERCOPY=y), using the
> /proc/powerpc/rtas/firmware_update interface to prepare a system
> firmware update yields a BUG():
> 
> kernel BUG at mm/usercopy.c:102!
> Oops: Exception in kernel mode, sig: 5 [#1]
> LE PAGE_SIZE=64K MMU=Hash SMP NR_CPUS=2048 NUMA pSeries
> Modules linked in:
> CPU: 0 PID: 2232 Comm: dd Not tainted 6.5.0-rc3+ #2
> Hardware name: IBM,8408-E8E POWER8E (raw) 0x4b0201 0xf000004 of:IBM,FW860.50 (SV860_146) hv:phyp pSeries
> NIP:  c0000000005991d0 LR: c0000000005991cc CTR: 0000000000000000
> REGS: c0000000148c76a0 TRAP: 0700   Not tainted  (6.5.0-rc3+)
> MSR:  8000000000029033 <SF,EE,ME,IR,DR,RI,LE>  CR: 24002242  XER: 0000000c
> CFAR: c0000000001fbd34 IRQMASK: 0
> [ ... GPRs omitted ... ]
> NIP [c0000000005991d0] usercopy_abort+0xa0/0xb0
> LR [c0000000005991cc] usercopy_abort+0x9c/0xb0
> Call Trace:
> [c0000000148c7940] [c0000000005991cc] usercopy_abort+0x9c/0xb0 (unreliable)
> [c0000000148c79b0] [c000000000536814] __check_heap_object+0x1b4/0x1d0
> [c0000000148c79f0] [c000000000599080] __check_object_size+0x2d0/0x380
> [c0000000148c7a30] [c000000000045ed4] rtas_flash_write+0xe4/0x250
> [c0000000148c7a80] [c00000000068a0fc] proc_reg_write+0xfc/0x160
> [c0000000148c7ab0] [c0000000005a381c] vfs_write+0xfc/0x4e0
> [c0000000148c7b70] [c0000000005a3e10] ksys_write+0x90/0x160
> [c0000000148c7bc0] [c00000000002f2c8] system_call_exception+0x178/0x320
> [c0000000148c7e50] [c00000000000d520] system_call_common+0x160/0x2c4
> --- interrupt: c00 at 0x7fff9f17e5e4
> 
> The blocks of the firmware image are copied directly from user memory
> to objects allocated from flash_block_cache, so flash_block_cache must
> be created using kmem_cache_create_usercopy() to mark it safe for user
> access.
> 
> Fixes: 6d07d1cd300f ("usercopy: Restrict non-usercopy caches to size 0")
> Signed-off-by: Nathan Lynch <nathanl@linux.ibm.com>

Reviewed-by: Kees Cook <keescook@chromium.org>

-- 
Kees Cook

WARNING: multiple messages have this Message-ID (diff)
From: Kees Cook <keescook@chromium.org>
To: nathanl@linux.ibm.com
Cc: Nicholas Piggin <npiggin@gmail.com>,
	linux-kernel@vger.kernel.org, linux-hardening@vger.kernel.org,
	linuxppc-dev@lists.ozlabs.org
Subject: Re: [PATCH v2] powerpc/rtas_flash: allow user copy to flash block cache objects
Date: Wed, 16 Aug 2023 14:07:08 -0700	[thread overview]
Message-ID: <202308161407.48AAE65CB@keescook> (raw)
In-Reply-To: <20230810-rtas-flash-vs-hardened-usercopy-v2-1-dcf63793a938@linux.ibm.com>

On Thu, Aug 10, 2023 at 10:37:55PM -0500, Nathan Lynch via B4 Relay wrote:
> From: Nathan Lynch <nathanl@linux.ibm.com>
> 
> With hardened usercopy enabled (CONFIG_HARDENED_USERCOPY=y), using the
> /proc/powerpc/rtas/firmware_update interface to prepare a system
> firmware update yields a BUG():
> 
> kernel BUG at mm/usercopy.c:102!
> Oops: Exception in kernel mode, sig: 5 [#1]
> LE PAGE_SIZE=64K MMU=Hash SMP NR_CPUS=2048 NUMA pSeries
> Modules linked in:
> CPU: 0 PID: 2232 Comm: dd Not tainted 6.5.0-rc3+ #2
> Hardware name: IBM,8408-E8E POWER8E (raw) 0x4b0201 0xf000004 of:IBM,FW860.50 (SV860_146) hv:phyp pSeries
> NIP:  c0000000005991d0 LR: c0000000005991cc CTR: 0000000000000000
> REGS: c0000000148c76a0 TRAP: 0700   Not tainted  (6.5.0-rc3+)
> MSR:  8000000000029033 <SF,EE,ME,IR,DR,RI,LE>  CR: 24002242  XER: 0000000c
> CFAR: c0000000001fbd34 IRQMASK: 0
> [ ... GPRs omitted ... ]
> NIP [c0000000005991d0] usercopy_abort+0xa0/0xb0
> LR [c0000000005991cc] usercopy_abort+0x9c/0xb0
> Call Trace:
> [c0000000148c7940] [c0000000005991cc] usercopy_abort+0x9c/0xb0 (unreliable)
> [c0000000148c79b0] [c000000000536814] __check_heap_object+0x1b4/0x1d0
> [c0000000148c79f0] [c000000000599080] __check_object_size+0x2d0/0x380
> [c0000000148c7a30] [c000000000045ed4] rtas_flash_write+0xe4/0x250
> [c0000000148c7a80] [c00000000068a0fc] proc_reg_write+0xfc/0x160
> [c0000000148c7ab0] [c0000000005a381c] vfs_write+0xfc/0x4e0
> [c0000000148c7b70] [c0000000005a3e10] ksys_write+0x90/0x160
> [c0000000148c7bc0] [c00000000002f2c8] system_call_exception+0x178/0x320
> [c0000000148c7e50] [c00000000000d520] system_call_common+0x160/0x2c4
> --- interrupt: c00 at 0x7fff9f17e5e4
> 
> The blocks of the firmware image are copied directly from user memory
> to objects allocated from flash_block_cache, so flash_block_cache must
> be created using kmem_cache_create_usercopy() to mark it safe for user
> access.
> 
> Fixes: 6d07d1cd300f ("usercopy: Restrict non-usercopy caches to size 0")
> Signed-off-by: Nathan Lynch <nathanl@linux.ibm.com>

Reviewed-by: Kees Cook <keescook@chromium.org>

-- 
Kees Cook

  reply	other threads:[~2023-08-16 21:07 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-08-11  3:37 [PATCH v2] powerpc/rtas_flash: allow user copy to flash block cache objects Nathan Lynch via B4 Relay
2023-08-11  3:37 ` Nathan Lynch via B4 Relay
2023-08-11  3:37 ` Nathan Lynch
2023-08-16 21:07 ` Kees Cook [this message]
2023-08-16 21:07   ` Kees Cook
2023-08-17  0:11 ` Michael Ellerman

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=202308161407.48AAE65CB@keescook \
    --to=keescook@chromium.org \
    --cc=christophe.leroy@csgroup.eu \
    --cc=linux-hardening@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=mpe@ellerman.id.au \
    --cc=nathanl@linux.ibm.com \
    --cc=npiggin@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.