On Wed, Jun 19, 2019 at 12:39:37PM +0300, Dan Carpenter wrote: > 72 int i, ret; > 73 > 74 drm_modeset_acquire_init(&ctx, 0); > 75 > 76 state = drm_atomic_state_alloc(dev); > 77 if (!state) { > 78 ret = -ENOMEM; > 79 goto out; > ^^^^^^^^ > The allocation failed. > > 80 } > 81 > 82 retry: > 83 state->acquire_ctx = &ctx; > 84 > 85 crtc_state = drm_atomic_get_crtc_state(state, crtc); > 86 if (IS_ERR(crtc_state)) { > 87 ret = PTR_ERR(crtc_state); > 88 goto out; > 89 } > 90 > 91 if (!crtc_state->enable) > 92 goto out; Oh... Also we need to set "ret" here. > 93 > 94 ret = drm_atomic_add_affected_connectors(state, crtc); > 95 if (ret) > 96 goto out; > 97 > 98 for_each_new_connector_in_state(state, conn, conn_state, i) { > 99 if (!conn_state->self_refresh_aware) > 100 goto out; > 101 } > 102 > 103 crtc_state->active = false; > 104 crtc_state->self_refresh_active = true; > 105 > 106 ret = drm_atomic_commit(state); > 107 if (ret) > 108 goto out; > 109 > 110 out: > 111 if (ret == -EDEADLK) { > 112 drm_atomic_state_clear(state); > 113 ret = drm_modeset_backoff(&ctx); > 114 if (!ret) > 115 goto retry; > 116 } > 117 > 118 drm_atomic_state_put(state); > ^^^^^ > NULL dereference. > > 119 drm_modeset_drop_locks(&ctx); > 120 drm_modeset_acquire_fini(&ctx); > 121 } regards, dan carpenter _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel