[PATCH] x86, PAT: honor CONFIG_STRICT_DEVMEM if pat is disable]

From: Michal Hocko
Date: Fri Jul 22 2011 - 05:11:57 EST

I have just come across a strange behavior of /dev/[k]mem when PAT is
configured while STRICT_DEVMEM is disabled.
One would expect that /dev/kmem would allow to access also the
system RAM in that configuration but that is not obviously true as pat
code defines range_is_allowed to protect from accessing that memory.

AFAICS this behavior was introduced in 0124cecf (x86, PAT: disable
/dev/mem mmap RAM with PAT) which says that it disables [k]mem with PAT
because it is safer. There is no explanation why it allows to access

The thing is even more complicated by the fact that the access is
allowed when nopat kernel parameter is specified because
range_is_allowed just does't call devmem_is_allowed in that case.

While I do agree that the feature is not safe in general we should honor
STRICT_DEVMEM setting in some way IMO.

What do you think about the following fix? I have tried to preserve
"disabled for PAT" by default behavior.