[llvm-dev] RFC: Implementing -fno-delete-null-pointer-checks in clang

Friedman, Eli via llvm-dev llvm-dev at lists.llvm.org
Mon May 14 12:29:08 PDT 2018


On 5/14/2018 12:11 PM, Manoj Gupta wrote:
>
>
> On Mon, May 14, 2018 at 12:07 PM Friedman, Eli 
> <efriedma at codeaurora.org <mailto:efriedma at codeaurora.org>> wrote:
>
>     On 5/12/2018 9:23 PM, Philip Reames via llvm-dev wrote:
>     > Fair warning, the following is a devil's advocate position, but
>     it's
>     > also a serious question.
>     >
>     > Given the entire point of this flag appears to be bug
>     mitigation, why
>     > not frame this as a sanitizer?  If we had a hypothetical
>     > -fsanitize=dereference which tried to catch dereferenced pointers
>     > derived from null, wouldn't that handle the case at hand?
>
>     It's called "-fsanitize=null": it catches stuff like "x[3]" where
>     x is
>     null. It's not quite complete; we don't check for arithmetic on a
>     null
>     pointer.
>
>     Yes, that would handle the situation in question, but putting
>     implicit
>     null checks all over the place is pretty expensive; I don't think
>     most
>     people would turn that on in production.
>
>     -Eli
>
>
> We had a similar discussion on an internal thread a while back if we 
> can use "-fsanitize=null" where clang
> would generate ud2 instruction for null pointer dereferences. 
> Unfortunately, this doesn't work in kernel context.
>
> Quoting the reply from our kernel team:
>
> "It will not cause a kernel panic: it's an exception trigger, and it's
> up to the exception handler to decide if it will return (WARN) or not
> (BUG). In the referenced function, this is calling WARN_ON() which
> will resume execution. (And note that the BUG() implementations are
> specifically marked with __attribute__((noreturn)). "

If the kernel can't use -fsanitize-trap, it could use some alternative 
like "-fsanitize=null -fno-sanitize-recover=null 
-fsanitize-minimal-runtime".  That doesn't seem like a fundamental flaw 
in the approach.

-Eli

-- 
Employee of Qualcomm Innovation Center, Inc.
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20180514/a7a1e1bf/attachment.html>


More information about the llvm-dev mailing list