Re: sg_io HARDENED_USERCOPY_PAGESPAN trace

From: Kees Cook
Date: Tue Jan 03 2017 - 16:48:15 EST


On Fri, Dec 30, 2016 at 7:10 AM, Christoph Hellwig <hch@xxxxxxxxxxxxx> wrote:
> On Fri, Dec 30, 2016 at 10:01:39AM -0500, Dave Jones wrote:
>> I threw this debug printk into the pagespan code to see what exactly
>> it was complaining about..
>>
>> ptr:ffff88042614cff8 end:ffff88042614d003 n:c
>>
>> so it was copying 12 bytes that spanned two pages.
>> >From my reading of the config option help text, this thing is
>> complaining that wasn't allocated with __GFP_COMP maybe ?

There are a lot of cases of "missing" __GFP_COMP, which is why
HARDENED_USERCOPY_PAGESPAN defaults to "n".

> If this is on a devie using blk-mq the block core will use high
> order allocations (as high as possible) to allocate the requests
> for each queue, so struct request could very well span multiple
> pages. But I don't see what __GFP_COMP would have to do with
> user copy annoations. As all requests for a queue are freed
> togeth again there is no point in setting __GFP_COMP for the
> request allocations.

Does it hurt anything to mark these pages as allocated "together" via
__GFP_COMP?

-Kees

--
Kees Cook
Nexus Security