* Re: drm/i915: Copy the staged connector config to the legacy atomic state
@ 2015-03-27 13:15 Dan Carpenter
2015-03-27 13:35 ` Ander Conselvan De Oliveira
0 siblings, 1 reply; 7+ messages in thread
From: Dan Carpenter @ 2015-03-27 13:15 UTC (permalink / raw)
To: ander.conselvan.de.oliveira; +Cc: intel-gfx
Hello Ander Conselvan de Oliveira,
The patch 944b0c765757: "drm/i915: Copy the staged connector config
to the legacy atomic state" from Mar 20, 2015, leads to the following
Smatch warning:
drivers/gpu/drm/i915/intel_display.c:11937 intel_modeset_stage_output_state()
error: 'connector_state' dereferencing possible ERR_PTR()
drivers/gpu/drm/i915/intel_display.c
11928 /* Now we've also updated encoder->new_crtc for all encoders. */
11929 for_each_intel_connector(dev, connector) {
11930 connector_state =
11931 drm_atomic_get_connector_state(state, &connector->base);
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
It's complaining that this can return an ERR_PTR.
11932
11933 if (connector->new_encoder) {
11934 if (connector->new_encoder != connector->encoder)
11935 connector->encoder = connector->new_encoder;
11936 } else {
11937 connector_state->crtc = NULL;
11938 }
11939 }
regards,
dan carpenter
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: drm/i915: Copy the staged connector config to the legacy atomic state
2015-03-27 13:15 Dan Carpenter
@ 2015-03-27 13:35 ` Ander Conselvan De Oliveira
0 siblings, 0 replies; 7+ messages in thread
From: Ander Conselvan De Oliveira @ 2015-03-27 13:35 UTC (permalink / raw)
To: Dan Carpenter; +Cc: intel-gfx
On Fri, 2015-03-27 at 16:15 +0300, Dan Carpenter wrote:
> Hello Ander Conselvan de Oliveira,
>
> The patch 944b0c765757: "drm/i915: Copy the staged connector config
> to the legacy atomic state" from Mar 20, 2015, leads to the following
> Smatch warning:
>
> drivers/gpu/drm/i915/intel_display.c:11937 intel_modeset_stage_output_state()
> error: 'connector_state' dereferencing possible ERR_PTR()
>
> drivers/gpu/drm/i915/intel_display.c
> 11928 /* Now we've also updated encoder->new_crtc for all encoders. */
> 11929 for_each_intel_connector(dev, connector) {
> 11930 connector_state =
> 11931 drm_atomic_get_connector_state(state, &connector->base);
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> It's complaining that this can return an ERR_PTR.
Yeah, oops, I missed that one. Thanks for reporting.
Cheers,
Ander
> 11932
> 11933 if (connector->new_encoder) {
> 11934 if (connector->new_encoder != connector->encoder)
> 11935 connector->encoder = connector->new_encoder;
> 11936 } else {
> 11937 connector_state->crtc = NULL;
> 11938 }
> 11939 }
>
>
> regards,
> dan carpenter
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: drm/i915: Copy the staged connector config to the legacy atomic state
@ 2015-03-27 14:36 Dan Carpenter
2015-03-30 7:59 ` Ander Conselvan De Oliveira
2015-03-30 10:50 ` David Weinehall
0 siblings, 2 replies; 7+ messages in thread
From: Dan Carpenter @ 2015-03-27 14:36 UTC (permalink / raw)
To: ander.conselvan.de.oliveira; +Cc: intel-gfx
Hello Ander Conselvan de Oliveira,
This is a semi-automatic email about new static checker warnings.
The patch 944b0c765757: "drm/i915: Copy the staged connector config
to the legacy atomic state" from Mar 20, 2015, leads to the following
Smatch complaint:
drivers/gpu/drm/i915/intel_display.c:9118 intel_release_load_detect_pipe()
error: we previously assumed 'state' could be null (see line 9082)
drivers/gpu/drm/i915/intel_display.c
9081 state = drm_atomic_state_alloc(dev);
9082 if (!state)
9083 goto fail;
^^^^^^^^^
Patch changes a return into a goto.
9084
9085 state->acquire_ctx = ctx;
9086
9087 connector_state = drm_atomic_get_connector_state(state, connector);
9088 if (IS_ERR(connector_state))
9089 goto fail;
9090
9091 to_intel_connector(connector)->new_encoder = NULL;
9092 intel_encoder->new_crtc = NULL;
9093 intel_crtc->new_enabled = false;
9094 intel_crtc->new_config = NULL;
9095
9096 connector_state->best_encoder = NULL;
9097 connector_state->crtc = NULL;
9098
9099 intel_set_mode(crtc, NULL, 0, 0, NULL, state);
9100
9101 drm_atomic_state_free(state);
9102
9103 if (old->release_fb) {
9104 drm_framebuffer_unregister_private(old->release_fb);
9105 drm_framebuffer_unreference(old->release_fb);
9106 }
9107
9108 return;
9109 }
9110
9111 /* Switch crtc and encoder back off if necessary */
9112 if (old->dpms_mode != DRM_MODE_DPMS_ON)
9113 connector->funcs->dpms(connector, old->dpms_mode);
9114
9115 return;
9116 fail:
9117 DRM_DEBUG_KMS("Couldn't release load detect pipe.\n");
9118 drm_atomic_state_free(state);
^^^^^
Dereferenced inside function call.
9119 }
9120
regards,
dan carpenter
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: drm/i915: Copy the staged connector config to the legacy atomic state
2015-03-27 14:36 drm/i915: Copy the staged connector config to the legacy atomic state Dan Carpenter
@ 2015-03-30 7:59 ` Ander Conselvan De Oliveira
2015-03-30 10:50 ` David Weinehall
1 sibling, 0 replies; 7+ messages in thread
From: Ander Conselvan De Oliveira @ 2015-03-30 7:59 UTC (permalink / raw)
To: Dan Carpenter; +Cc: intel-gfx
On Fri, 2015-03-27 at 17:36 +0300, Dan Carpenter wrote:
> Hello Ander Conselvan de Oliveira,
>
> This is a semi-automatic email about new static checker warnings.
>
> The patch 944b0c765757: "drm/i915: Copy the staged connector config
> to the legacy atomic state" from Mar 20, 2015, leads to the following
> Smatch complaint:
>
> drivers/gpu/drm/i915/intel_display.c:9118 intel_release_load_detect_pipe()
> error: we previously assumed 'state' could be null (see line 9082)
>
> drivers/gpu/drm/i915/intel_display.c
> 9081 state = drm_atomic_state_alloc(dev);
> 9082 if (!state)
> 9083 goto fail;
> ^^^^^^^^^
> Patch changes a return into a goto.
>
> 9084
> 9085 state->acquire_ctx = ctx;
> 9086
> 9087 connector_state = drm_atomic_get_connector_state(state, connector);
> 9088 if (IS_ERR(connector_state))
> 9089 goto fail;
> 9090
> 9091 to_intel_connector(connector)->new_encoder = NULL;
> 9092 intel_encoder->new_crtc = NULL;
> 9093 intel_crtc->new_enabled = false;
> 9094 intel_crtc->new_config = NULL;
> 9095
> 9096 connector_state->best_encoder = NULL;
> 9097 connector_state->crtc = NULL;
> 9098
> 9099 intel_set_mode(crtc, NULL, 0, 0, NULL, state);
> 9100
> 9101 drm_atomic_state_free(state);
> 9102
> 9103 if (old->release_fb) {
> 9104 drm_framebuffer_unregister_private(old->release_fb);
> 9105 drm_framebuffer_unreference(old->release_fb);
> 9106 }
> 9107
> 9108 return;
> 9109 }
> 9110
> 9111 /* Switch crtc and encoder back off if necessary */
> 9112 if (old->dpms_mode != DRM_MODE_DPMS_ON)
> 9113 connector->funcs->dpms(connector, old->dpms_mode);
> 9114
> 9115 return;
> 9116 fail:
> 9117 DRM_DEBUG_KMS("Couldn't release load detect pipe.\n");
> 9118 drm_atomic_state_free(state);
> ^^^^^
> Dereferenced inside function call.
That's odd, this is checking the "fail" label inside another function.
The change above was in intel_get_load_detect_pipe(), and this is in
intel_release_load_detect_pipe().
Anyway, the fail path in intel_get_load_detect_pipe() does check for
state being NULL before using it.
Cheers,
Ander
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: drm/i915: Copy the staged connector config to the legacy atomic state
2015-03-27 14:36 drm/i915: Copy the staged connector config to the legacy atomic state Dan Carpenter
2015-03-30 7:59 ` Ander Conselvan De Oliveira
@ 2015-03-30 10:50 ` David Weinehall
2015-03-30 11:03 ` Ander Conselvan De Oliveira
2015-03-30 12:02 ` Dan Carpenter
1 sibling, 2 replies; 7+ messages in thread
From: David Weinehall @ 2015-03-30 10:50 UTC (permalink / raw)
To: Dan Carpenter; +Cc: ander.conselvan.de.oliveira, intel-gfx
On Fri, Mar 27, 2015 at 05:36:40PM +0300, Dan Carpenter wrote:
> Hello Ander Conselvan de Oliveira,
>
> This is a semi-automatic email about new static checker warnings.
>
> The patch 944b0c765757: "drm/i915: Copy the staged connector config
> to the legacy atomic state" from Mar 20, 2015, leads to the following
> Smatch complaint:
>
> drivers/gpu/drm/i915/intel_display.c:9118 intel_release_load_detect_pipe()
> error: we previously assumed 'state' could be null (see line 9082)
>
> drivers/gpu/drm/i915/intel_display.c
> 9081 state = drm_atomic_state_alloc(dev);
> 9082 if (!state)
> 9083 goto fail;
> ^^^^^^^^^
> Patch changes a return into a goto.
>
> 9084
> 9085 state->acquire_ctx = ctx;
> 9086
> 9087 connector_state = drm_atomic_get_connector_state(state, connector);
> 9088 if (IS_ERR(connector_state))
> 9089 goto fail;
> 9090
> 9091 to_intel_connector(connector)->new_encoder = NULL;
> 9092 intel_encoder->new_crtc = NULL;
> 9093 intel_crtc->new_enabled = false;
> 9094 intel_crtc->new_config = NULL;
> 9095
> 9096 connector_state->best_encoder = NULL;
> 9097 connector_state->crtc = NULL;
> 9098
> 9099 intel_set_mode(crtc, NULL, 0, 0, NULL, state);
> 9100
> 9101 drm_atomic_state_free(state);
> 9102
> 9103 if (old->release_fb) {
> 9104 drm_framebuffer_unregister_private(old->release_fb);
> 9105 drm_framebuffer_unreference(old->release_fb);
> 9106 }
> 9107
> 9108 return;
> 9109 }
> 9110
> 9111 /* Switch crtc and encoder back off if necessary */
> 9112 if (old->dpms_mode != DRM_MODE_DPMS_ON)
> 9113 connector->funcs->dpms(connector, old->dpms_mode);
> 9114
> 9115 return;
> 9116 fail:
> 9117 DRM_DEBUG_KMS("Couldn't release load detect pipe.\n");
> 9118 drm_atomic_state_free(state);
> ^^^^^
> Dereferenced inside function call.
>
> 9119 }
> 9120
Wouldn't it make more sense to make drm_atomic_state_free() follow
the same semantics as *free() functions typically do
(no operation performed)?
Kind regards, David Weinehall
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: drm/i915: Copy the staged connector config to the legacy atomic state
2015-03-30 10:50 ` David Weinehall
@ 2015-03-30 11:03 ` Ander Conselvan De Oliveira
2015-03-30 12:02 ` Dan Carpenter
1 sibling, 0 replies; 7+ messages in thread
From: Ander Conselvan De Oliveira @ 2015-03-30 11:03 UTC (permalink / raw)
To: David Weinehall; +Cc: intel-gfx, Dan Carpenter
On Mon, 2015-03-30 at 13:50 +0300, David Weinehall wrote:
> On Fri, Mar 27, 2015 at 05:36:40PM +0300, Dan Carpenter wrote:
> > Hello Ander Conselvan de Oliveira,
> >
> > This is a semi-automatic email about new static checker warnings.
> >
> > The patch 944b0c765757: "drm/i915: Copy the staged connector config
> > to the legacy atomic state" from Mar 20, 2015, leads to the following
> > Smatch complaint:
> >
> > drivers/gpu/drm/i915/intel_display.c:9118 intel_release_load_detect_pipe()
> > error: we previously assumed 'state' could be null (see line 9082)
> >
> > drivers/gpu/drm/i915/intel_display.c
> > 9081 state = drm_atomic_state_alloc(dev);
> > 9082 if (!state)
> > 9083 goto fail;
> > ^^^^^^^^^
> > Patch changes a return into a goto.
> >
> > 9084
> > 9085 state->acquire_ctx = ctx;
> > 9086
> > 9087 connector_state = drm_atomic_get_connector_state(state, connector);
> > 9088 if (IS_ERR(connector_state))
> > 9089 goto fail;
> > 9090
> > 9091 to_intel_connector(connector)->new_encoder = NULL;
> > 9092 intel_encoder->new_crtc = NULL;
> > 9093 intel_crtc->new_enabled = false;
> > 9094 intel_crtc->new_config = NULL;
> > 9095
> > 9096 connector_state->best_encoder = NULL;
> > 9097 connector_state->crtc = NULL;
> > 9098
> > 9099 intel_set_mode(crtc, NULL, 0, 0, NULL, state);
> > 9100
> > 9101 drm_atomic_state_free(state);
> > 9102
> > 9103 if (old->release_fb) {
> > 9104 drm_framebuffer_unregister_private(old->release_fb);
> > 9105 drm_framebuffer_unreference(old->release_fb);
> > 9106 }
> > 9107
> > 9108 return;
> > 9109 }
> > 9110
> > 9111 /* Switch crtc and encoder back off if necessary */
> > 9112 if (old->dpms_mode != DRM_MODE_DPMS_ON)
> > 9113 connector->funcs->dpms(connector, old->dpms_mode);
> > 9114
> > 9115 return;
> > 9116 fail:
> > 9117 DRM_DEBUG_KMS("Couldn't release load detect pipe.\n");
> > 9118 drm_atomic_state_free(state);
> > ^^^^^
> > Dereferenced inside function call.
> >
> > 9119 }
> > 9120
>
> Wouldn't it make more sense to make drm_atomic_state_free() follow
> the same semantics as *free() functions typically do
> (no operation performed)?
It would. I already signed up to send that patch, even. Just didn't get
around to yet.
Ander
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: drm/i915: Copy the staged connector config to the legacy atomic state
2015-03-30 10:50 ` David Weinehall
2015-03-30 11:03 ` Ander Conselvan De Oliveira
@ 2015-03-30 12:02 ` Dan Carpenter
1 sibling, 0 replies; 7+ messages in thread
From: Dan Carpenter @ 2015-03-30 12:02 UTC (permalink / raw)
To: ander.conselvan.de.oliveira, intel-gfx
This is a typical "one err bug" which is a kind of bug where there is
just one err: label which does all the error handling. One err bugs are
one of the most common class of bugs in the kernel. "Oh, we didn't
initialize that struct member" or "That pointer is NULL."
In networking they have resisted patches to add sanity checks to
free_netdev() so that people can't do one err style error handling. You
always have to know if the dev is allocated or not.
Having one error label makes sense if the label is "unlock:" but labels
like fail:, err:, out:, or bail are not very good label names.
The disadvantage of having multiple returns is that it means you can't
have a debug statement, but debug statements are mostly a waste of RAM
and we can use ftrace for that.
regards,
dan carpenter
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2015-03-30 12:02 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-03-27 14:36 drm/i915: Copy the staged connector config to the legacy atomic state Dan Carpenter
2015-03-30 7:59 ` Ander Conselvan De Oliveira
2015-03-30 10:50 ` David Weinehall
2015-03-30 11:03 ` Ander Conselvan De Oliveira
2015-03-30 12:02 ` Dan Carpenter
-- strict thread matches above, loose matches on Subject: below --
2015-03-27 13:15 Dan Carpenter
2015-03-27 13:35 ` Ander Conselvan De Oliveira
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox