From: Kees Cook <keescook@chromium.org>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: kernel test robot <lkp@intel.com>,
Matt Porter <mporter@kernel.crashing.org>,
Alexandre Bounine <alex.bou9@gmail.com>,
Jing Xiangfeng <jingxiangfeng@huawei.com>,
Ira Weiny <ira.weiny@intel.com>,
John Hubbard <jhubbard@nvidia.com>,
Souptick Joarder <jrdr.linux@gmail.com>,
"Gustavo A . R . Silva" <gustavoars@kernel.org>,
Dan Carpenter <dan.carpenter@oracle.com>,
linux-kernel@vger.kernel.org, linux-hardening@vger.kernel.org
Subject: Re: [PATCH] rapidio: Avoid bogus __alloc_size warning
Date: Thu, 9 Sep 2021 15:51:23 -0700 [thread overview]
Message-ID: <202109091549.FF8E0C61E2@keescook> (raw)
In-Reply-To: <20210909132752.4bde36ccf50720e56160f00c@linux-foundation.org>
On Thu, Sep 09, 2021 at 01:27:52PM -0700, Andrew Morton wrote:
> On Thu, 9 Sep 2021 09:14:09 -0700 Kees Cook <keescook@chromium.org> wrote:
>
> > GCC 9.3 (but not later) incorrectly evaluates the arguments to
> > check_copy_size(), getting seemingly confused by the size being returned
> > from array_size(). Instead, perform the calculation once, which both
> > makes the code more readable and avoids the bug in GCC.
> >
> > In file included from arch/x86/include/asm/preempt.h:7,
> > from include/linux/preempt.h:78,
> > from include/linux/spinlock.h:55,
> > from include/linux/mm_types.h:9,
> > from include/linux/buildid.h:5,
> > from include/linux/module.h:14,
> > from drivers/rapidio/devices/rio_mport_cdev.c:13:
> > In function 'check_copy_size',
> > inlined from 'copy_from_user' at include/linux/uaccess.h:191:6,
> > inlined from 'rio_mport_transfer_ioctl' at drivers/rapidio/devices/rio_mport_cdev.c:983:6:
> > include/linux/thread_info.h:213:4: error: call to '__bad_copy_to' declared with attribute error: copy destination size is too small
> > 213 | __bad_copy_to();
> > | ^~~~~~~~~~~~~~~
> >
> > But the allocation size and the copy size are identical:
> >
> > transfer = vmalloc(array_size(sizeof(*transfer), transaction.count));
> > if (!transfer)
> > return -ENOMEM;
> >
> > if (unlikely(copy_from_user(transfer,
> > (void __user *)(uintptr_t)transaction.block,
> > array_size(sizeof(*transfer), transaction.count)))) {
>
> That's an "error", not a warning. Or is this thanks to the new -Werror?
This is a "regular" error (__bad_copy_to() uses __compiletime_error()).
> Either way, I'm inclined to cc:stable on this, because use of gcc-9 on
> older kernels will be a common thing down the ages.
>
> If it's really an "error" on non-Werror kernels then definitely cc:stable.
I would expect that as only being needed if __alloc_size was backported
to -stable, which seems unlikely.
--
Kees Cook
next prev parent reply other threads:[~2021-09-09 22:51 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-09-09 16:14 [PATCH] rapidio: Avoid bogus __alloc_size warning Kees Cook
2021-09-09 20:27 ` Andrew Morton
2021-09-09 22:26 ` John Hubbard
2021-09-09 22:51 ` Kees Cook [this message]
2021-09-09 23:11 ` Andrew Morton
2021-09-10 1:52 ` Kees Cook
2021-09-10 4:50 ` Dan Carpenter
2021-09-10 5:48 ` Andrew Morton
2021-09-10 6:29 ` Kees Cook
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=202109091549.FF8E0C61E2@keescook \
--to=keescook@chromium.org \
--cc=akpm@linux-foundation.org \
--cc=alex.bou9@gmail.com \
--cc=dan.carpenter@oracle.com \
--cc=gustavoars@kernel.org \
--cc=ira.weiny@intel.com \
--cc=jhubbard@nvidia.com \
--cc=jingxiangfeng@huawei.com \
--cc=jrdr.linux@gmail.com \
--cc=linux-hardening@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=lkp@intel.com \
--cc=mporter@kernel.crashing.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.