Re: ceph: Move a variable assignment behind a condition check in __ceph_remove_cap()

From: Markus Elfring

Date: Tue Jul 14 2026 - 03:36:08 EST


>>> The address of a data structure member was determined before
>>> a corresponding null pointer check in the implementation of
>>> the function “__ceph_remove_cap”.
>>>
>>> Thus avoid the risk for undefined behaviour by moving the assignment
>>> for the variable “inode” behind a condition check.
>>>
>>> This issue was detected by using the Coccinelle software.
>>>
>>> Fixes: 38d46409c4639a1d659ebfa70e27a8bed6b8ee1d ("ceph: print cluster
>>> fsid and client global_id in all debug logs")

> I have explained to Markus many times that these are not dereferences,
> they are just pointer math.

How does it help to repeat such a questionable development view?


> So the original code works fine and does
> not need a Fixes tag or a CC to stable.
>
> And then Markus responds, "the C standard says we are not allowed to
> dereference NULL pointers"... Which is true, but again, it's not a
> dereference.
Why did you get special difficulties with adhering to standard specifications
also in the discussed case?

Regards,
Markus