* Krzysztof Kozlowski (krzysztof.kozlowski@xxxxxxxxxx) wrote: > On 24/09/2023 02:41, Dr. David Alan Gilbert wrote: > > Hi, > > I randomly noticed there are a couple of places in the kernel that > > do > > ERR_PTR(0); > > > > and thought that was odd - shouldn't those just be NULL's ? > > > > 1) i915 > > drivers/gpu/drm/i915/gt/uc/selftest_guc_multi_lrc.c : 47 > > > > if (i <= 1) > > return ERR_PTR(0); > > > > from f9d72092cb490 > > > > 2) trf7970a > > drivers/nfc/trf7970a.c : 896 > > > > trf->ignore_timeout = > > !cancel_delayed_work(&trf->timeout_work); > > trf->rx_skb = ERR_PTR(0); > > I would guess that code is relying on rx_skb being valid pointer or ERR > (if (!IS_ERR(...))). If seems mixed, that function calls trf7970a_send_upstream which has both: if (trf->rx_skb && !IS_ERR(trf->rx_skb) && !trf->aborting) print_hex_dump_debug("trf7970a rx data: ", DUMP_PREFIX_NONE, 16, 1, trf->rx_skb->data, trf->rx_skb->len, false); and if (!IS_ERR(trf->rx_skb)) { kfree_skb(trf->rx_skb); trf->rx_skb = ERR_PTR(-ECANCELED); } It's not clear to me whether it's expecteing that 2nd if to happen or not. I notice err.h gained a IS_ERR_OR_NULL to help that case as well. Dave > Best regards, > Krzysztof > -- -----Open up your eyes, open up your mind, open up your code ------- / Dr. David Alan Gilbert | Running GNU/Linux | Happy \ \ dave @ treblig.org | | In Hex / \ _________________________|_____ http://www.treblig.org |_______/