Re: [PATCH] lkdtm: fix ACCESS_USERSPACE test
From: Kees Cook
Date: Fri Oct 30 2015 - 14:01:52 EST
On Thu, Oct 29, 2015 at 6:28 AM, Stephen Smalley <sds@xxxxxxxxxxxxx> wrote:
> On 10/27/2015 08:12 PM, Greg KH wrote:
>>
>> On Tue, Oct 27, 2015 at 04:47:53PM -0400, Stephen Smalley wrote:
>>>
>>> Add a copy_to_user() call to the ACCESS_USERSPACE test
>>> prior to attempting direct dereferencing of the user
>>> address to ensure the page is present. Otherwise,
>>> a fault occurs on arm kernels even prior to the introduction
>>> of CONFIG_CPU_SW_DOMAIN_PAN, and there is no difference in
>>> behavior for CONFIG_CPU_SW_DOMAIN_PAN=n vs CONFIG_CPU_SW_DOMAIN_PAN=y.
>>>
>>> Before this change, for any value of CONFIG_CPU_SW_DOMAIN_PAN:
>>> lkdtm: Performing direct entry ACCESS_USERSPACE
>>> lkdtm: attempting bad read at b6fe8000
>>> Unable to handle kernel paging request at virtual address b6fe8000
>>>
>>> After this change, for CONFIG_CPU_SW_DOMAIN_PAN=n:
>>> lkdtm: Performing direct entry ACCESS_USERSPACE
>>> lkdtm: attempting bad read at b6efc000
>>> lkdtm: attempting bad write at b6efc000
>>>
>>> After this change, for CONFIG_CPU_SW_DOMAIN_PAN=y:
>>> lkdtm: Performing direct entry ACCESS_USERSPACE
>>> lkdtm: attempting bad read at b6f7d000
>>> Unhandled fault: page domain fault (0x01b) at 0xb6f7d000
>>> ...
>>>
>>> Signed-off-by: Stephen Smalley <sds@xxxxxxxxxxxxx>
>>> ---
>>> drivers/misc/lkdtm.c | 8 +++++++-
>>> 1 file changed, 7 insertions(+), 1 deletion(-)
>>
>>
>> Should this also be applied to older kernels (i.e. a stable fix)?
>
>
> I don't think it qualifies (only a fix for a kernel crash test), but will
> defer to Kees.
This emulated PAN support was introduced for v4.3 (a5e090acb), so
there's no meaningful reason to backport the test fix, IMO.
-Kees
--
Kees Cook
Chrome OS Security
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/