In vcc_probe(), we should check the return value of mdesc_grab() as it may return NULL. While the vio_vdev_node() has the NULL-check, but if there is still a call to mdesc_release() which may cause a NPD bug. Fixes: 5d171050e28f ("sparc64: vcc: Enable VCC port probe and removal") Signed-off-by: Liang He <windhl@xxxxxxx> --- drivers/tty/vcc.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/tty/vcc.c b/drivers/tty/vcc.c index 34ba6e54789a..e3ba63d0a91f 100644 --- a/drivers/tty/vcc.c +++ b/drivers/tty/vcc.c @@ -610,6 +610,9 @@ static int vcc_probe(struct vio_dev *vdev, const struct vio_device_id *id) hp = mdesc_grab(); + if (!hp) + return -ENODEV; + node = vio_vdev_node(hp, vdev); if (node == MDESC_NODE_NULL) { rv = -ENXIO; -- 2.25.1