[PATCH 0/7] nouveau/gsp: Fix NULL pointer dereference and cleanup IS_ERR_OR_NULL

From: Hongling Zeng

Date: Fri May 29 2026 - 00:49:20 EST


This patch series fixes NULL pointer dereference bugs introduced in the
previous IS_ERR_OR_NULL cleanup series and adds documentation as requested
by Danilo Krummrich.

Background

The previous IS_ERR_OR_NULL cleanup series introduced serious bugs that
caused actual kernel crashes:

BUG: kernel NULL pointer dereference, address: 000000000000002c
RIP: 0010:r535_gsp_rpc_rm_ctrl_push+0x60/0x110 [nouveau]

The root cause was that underlying functions (r535_gsp_msgq_recv() and
r535_gsp_msg_recv()) could return NULL, but the upper layers only checked
with IS_ERR(), missing the NULL cases.

Changes in V2

Compared to the previous series, this version:

1. **Fixes underlying functions first** (Patch 1)
- r535_gsp_msgq_recv(): Return ERR_PTR(-EINVAL) instead of NULL
- r535_gsp_msg_recv(): Return ERR_PTR(-EIO) instead of NULL

2. **Adds documentation** (Patch 2, per Danilo's request)
- Kernel-doc comments for all affected functions
- Clear return value contracts: "never NULL"

3. **Safe cleanup** (Patches 3-7)
- IS_ERR_OR_NULL() -> IS_ERR() now safe
- No NULL pointer dereference risks

Hongling Zeng (7):
nouveau/gsp/rm: Fix NULL return values in message receive functions
nouveau/gsp: Add documentation for RPC functions return values
nouveau/gsp: cleanup IS_ERR_OR_NULL in rpc_rd
nouveau/gsp: cleanup IS_ERR_OR_NULL in rm_alloc functions
nouveau/gsp: cleanup IS_ERR_OR_NULL in core implementation
nouveau/gsp/rm: cleanup WARN_ON(IS_ERR_OR_NULL)
nouveau/gsp/rm: cleanup remaining IS_ERR_OR_NULL usage

.../gpu/drm/nouveau/include/nvkm/subdev/gsp.h | 8 +--
.../nouveau/nvkm/subdev/gsp/rm/r535/alloc.c | 4 +-
.../drm/nouveau/nvkm/subdev/gsp/rm/r535/bar.c | 2 +-
.../nouveau/nvkm/subdev/gsp/rm/r535/ctrl.c | 2 +-
.../drm/nouveau/nvkm/subdev/gsp/rm/r535/rpc.c | 55 ++++++++++++++++---
5 files changed, 55 insertions(+), 16 deletions(-)

--
2.25.1