From: Hongling Zeng <zenghongling@kylinos.cn>
To: lyude@redhat.com, dakr@kernel.org,
maarten.lankhorst@linux.intel.com, mripard@kernel.org,
tzimmermann@suse.de, airlied@gmail.com, simona@ffwll.ch,
airlied@redhat.com, ttabi@nvidia.com, bskeggs@nvidia.com,
dri-devel@lists.freedesktop.org
Cc: nouveau@lists.freedesktop.org, linux-kernel@vger.kernel.org,
zhongling0719@126.com, Hongling Zeng <zenghongling@kylinos.cn>
Subject: [PATCH v2 0/5] nouveau/gsp: Clean up IS_ERR vs IS_ERR_OR_NULL usage
Date: Mon, 1 Jun 2026 17:53:58 +0800 [thread overview]
Message-ID: <20260601095403.228220-1-zenghongling@kylinos.cn> (raw)
This series addresses feedback from Danilo Krummrich and Timur Tabi
regarding the use of IS_ERR() vs IS_ERR_OR_NULL() in the nouveau
GSP RPC code.
The key insight is that we should align error checking with the actual
return value contracts of each function:
- Functions that never return NULL should use IS_ERR()
- Functions that can return NULL should use IS_ERR_OR_NULL()
This version adds documentation to clarify the return value contracts,
making it easier for maintainers to validate future changes.
Return Value Analysis
After thorough code analysis, the RPC functions are categorized as:
Never return NULL (use IS_ERR):**
- r535_gsp_msgq_peek()
- r535_gsp_msgq_recv_one_elem()
- r535_gsp_rpc_get()
CAN return NULL (use IS_ERR_OR_NULL):**
- r535_gsp_msgq_recv() - returns NULL when RPC length is invalid
- r535_gsp_msg_recv() - returns NULL when queue drained
- r535_gsp_rpc_handle_reply() - returns NULL for NOWAIT/NOSEQ policies
- r535_gsp_rpc_send() - can return NULL via handle_reply
- r535_gsp_rpc_push() - can return NULL via handle_reply
Changes in v2
- Added kernel-doc comments documenting return value contracts for all
RPC functions
- Cleaned up incorrect IS_ERR_OR_NULL() usage for functions that never
return NULL
- Kept IS_ERR_OR_NULL() in places where NULL is actually possible
- Added Fixes tags to all patches
Testing
This fixes the NULL pointer dereference oops that occurs during
nouveau initialization on some systems.
Patches
Hongling Zeng (5):
nouveau/gsp/rpc: Document RPC function return value contracts
nouveau/gsp/rpc: Cleanup incorrect IS_ERR_OR_NULL in rpc.c
nouveau/gsp/rm/alloc: Cleanup IS_ERR_OR_NULL usage
nouveau/gsp/rm/bar: Cleanup IS_ERR_OR_NULL usage
nouveau/gsp: Cleanup IS_ERR_OR_NULL in nvkm_gsp_rpc_rd()
drivers/gpu/drm/nouveau/include/nvkm/subdev/gsp.h | 2 +-
.../gpu/drm/nouveau/nvkm/subdev/gsp/rm/r535/alloc.c | 2 +-
.../gpu/drm/nouveau/nvkm/subdev/gsp/rm/r535/bar.c | 2 +-
.../gpu/drm/nouveau/nvkm/subdev/gsp/rm/r535/rpc.c | 81 ++++++++++++++++++-
4 files changed, 81 insertions(+), 6 deletions(-)
next reply other threads:[~2026-06-01 9:54 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-06-01 9:53 Hongling Zeng [this message]
2026-06-01 9:53 ` [PATCH v2 1/5] nouveau/gsp/rpc: Document RPC function return value contracts Hongling Zeng
2026-06-04 4:22 ` Claude review: " Claude Code Review Bot
2026-06-01 9:54 ` [PATCH v2 2/5] nouveau/gsp/rpc: Cleanup incorrect IS_ERR_OR_NULL in rpc.c Hongling Zeng
2026-06-04 4:22 ` Claude review: " Claude Code Review Bot
2026-06-01 9:54 ` [PATCH v2 3/5] nouveau/gsp/rm/alloc: Cleanup IS_ERR_OR_NULL usage Hongling Zeng
2026-06-04 4:22 ` Claude review: " Claude Code Review Bot
2026-06-01 9:54 ` [PATCH v2 4/5] nouveau/gsp/rm/bar: " Hongling Zeng
2026-06-04 4:22 ` Claude review: " Claude Code Review Bot
2026-06-01 9:54 ` [PATCH v2 5/5] nouveau/gsp: Cleanup IS_ERR_OR_NULL in nvkm_gsp_rpc_rd() Hongling Zeng
2026-06-04 4:22 ` Claude review: " Claude Code Review Bot
2026-06-04 4:22 ` Claude review: nouveau/gsp: Clean up IS_ERR vs IS_ERR_OR_NULL usage Claude Code Review Bot
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260601095403.228220-1-zenghongling@kylinos.cn \
--to=zenghongling@kylinos.cn \
--cc=airlied@gmail.com \
--cc=airlied@redhat.com \
--cc=bskeggs@nvidia.com \
--cc=dakr@kernel.org \
--cc=dri-devel@lists.freedesktop.org \
--cc=linux-kernel@vger.kernel.org \
--cc=lyude@redhat.com \
--cc=maarten.lankhorst@linux.intel.com \
--cc=mripard@kernel.org \
--cc=nouveau@lists.freedesktop.org \
--cc=simona@ffwll.ch \
--cc=ttabi@nvidia.com \
--cc=tzimmermann@suse.de \
--cc=zhongling0719@126.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox