It looks like that when we moved nouveau over to using drm_dp_aux_init()
and registering it's aux bus during late connector registration, we totally
forgot to fix the failure codepath in nouveau_connector_create() - as it
still seems to assume that drm_dp_aux_init() can fail (it can't).

So, let's fix that and also add a missing check to ensure that we've
properly allocated nv_connector->aux.name while we're at it.

Signed-off-by: Lyude Paul <[email protected]>
Fixes: fd43ad9d47e7 ("drm/nouveau/kms/nv50-: Move AUX adapter reg to connector 
late register/early unregister")
Cc: <[email protected]> # v5.14+
---
 drivers/gpu/drm/nouveau/nouveau_connector.c | 8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)

diff --git a/drivers/gpu/drm/nouveau/nouveau_connector.c 
b/drivers/gpu/drm/nouveau/nouveau_connector.c
index 22b83a6577eb..df83c4654e26 100644
--- a/drivers/gpu/drm/nouveau/nouveau_connector.c
+++ b/drivers/gpu/drm/nouveau/nouveau_connector.c
@@ -1361,13 +1361,11 @@ nouveau_connector_create(struct drm_device *dev,
                snprintf(aux_name, sizeof(aux_name), "sor-%04x-%04x",
                         dcbe->hasht, dcbe->hashm);
                nv_connector->aux.name = kstrdup(aux_name, GFP_KERNEL);
-               drm_dp_aux_init(&nv_connector->aux);
-               if (ret) {
-                       NV_ERROR(drm, "Failed to init AUX adapter for 
sor-%04x-%04x: %d\n",
-                                dcbe->hasht, dcbe->hashm, ret);
+               if (!nv_connector->aux.name) {
                        kfree(nv_connector);
-                       return ERR_PTR(ret);
+                       return ERR_PTR(-ENOMEM);
                }
+               drm_dp_aux_init(&nv_connector->aux);
                fallthrough;
        default:
                funcs = &nouveau_connector_funcs;
-- 
2.35.3

Reply via email to