From: Laurent Pinchart <laurent.pinchart@ideasonboard.com> To: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Cc: dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, Kieran Bingham <kieran.bingham+renesas@ideasonboard.com>, linux-renesas-soc@vger.kernel.org Subject: Re: [PATCH 12/17] drm/rcar-du: Convert to using __drm_atomic_helper_crtc_reset() for reset. Date: Fri, 1 Mar 2019 16:36:40 +0200 [thread overview] Message-ID: <20190301143640.GD32244@pendragon.ideasonboard.com> (raw) In-Reply-To: <93a242fe-41fc-bbe5-0ccd-f26eb729fe85@linux.intel.com> Hi Marteen, On Fri, Mar 01, 2019 at 03:08:20PM +0100, Maarten Lankhorst wrote: > Op 01-03-2019 om 14:13 schreef Laurent Pinchart: > > On Fri, Mar 01, 2019 at 01:56:22PM +0100, Maarten Lankhorst wrote: > >> Convert rcar-du to using __drm_atomic_helper_crtc_reset(), instead of > >> writing its own version. Instead of open coding destroy_state(), call > >> it directly for freeing the old state. > > I don't think the second sentence applies to this patch. > > > >> Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> > >> Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com> > >> Cc: Kieran Bingham <kieran.bingham+renesas@ideasonboard.com> > >> Cc: linux-renesas-soc@vger.kernel.org > >> --- > >> drivers/gpu/drm/rcar-du/rcar_du_crtc.c | 11 +++-------- > >> 1 file changed, 3 insertions(+), 8 deletions(-) > >> > >> diff --git a/drivers/gpu/drm/rcar-du/rcar_du_crtc.c b/drivers/gpu/drm/rcar-du/rcar_du_crtc.c > >> index 4cdea14d552f..7766551e67fc 100644 > >> --- a/drivers/gpu/drm/rcar-du/rcar_du_crtc.c > >> +++ b/drivers/gpu/drm/rcar-du/rcar_du_crtc.c > >> @@ -891,22 +891,17 @@ static void rcar_du_crtc_cleanup(struct drm_crtc *crtc) > >> > >> static void rcar_du_crtc_reset(struct drm_crtc *crtc) > >> { > >> - struct rcar_du_crtc_state *state; > >> + struct rcar_du_crtc_state *state = kzalloc(sizeof(*state), GFP_KERNEL); > >> > >> - if (crtc->state) { > >> + if (crtc->state) > >> rcar_du_crtc_atomic_destroy_state(crtc, crtc->state); > >> - crtc->state = NULL; > >> - } > >> > >> - state = kzalloc(sizeof(*state), GFP_KERNEL); > >> + __drm_atomic_helper_crtc_reset(crtc, &state->state); > > > > state may be NULL here if the above kzalloc() failed. Let's keep the > > original order of the function, and simply call > > __drm_atomic_helper_crtc_reset() after the NULL check below. > > There were 10 different ways crtc was implemented, I felt it was good to settle on one. > > We don't handle during reset at all, would need to start propagating this first before we should handle errors, imho. That's not the point. As state can be NULL, you could end up dereferencing a NULL pointer. The fact that the base state is the first field in the rcar_du_crtc_state structure is just luck, and shouldn't be relied on. > Looking more closely, it's the same way that errors in > rcar_du_plane_reset() are handled. :) It's not, the return value of kzalloc() is checked explicitly in rcar_du_plane_reset() before calling __drm_atomic_helper_plane_reset(). Please copy the code flow of rcar_du_plane_reset() to implement rcar_du_crtc_reset(). -- Regards, Laurent Pinchart
WARNING: multiple messages have this Message-ID (diff)
From: Laurent Pinchart <laurent.pinchart@ideasonboard.com> To: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Cc: linux-renesas-soc@vger.kernel.org, intel-gfx@lists.freedesktop.org, Kieran Bingham <kieran.bingham+renesas@ideasonboard.com>, dri-devel@lists.freedesktop.org Subject: Re: [PATCH 12/17] drm/rcar-du: Convert to using __drm_atomic_helper_crtc_reset() for reset. Date: Fri, 1 Mar 2019 16:36:40 +0200 [thread overview] Message-ID: <20190301143640.GD32244@pendragon.ideasonboard.com> (raw) In-Reply-To: <93a242fe-41fc-bbe5-0ccd-f26eb729fe85@linux.intel.com> Hi Marteen, On Fri, Mar 01, 2019 at 03:08:20PM +0100, Maarten Lankhorst wrote: > Op 01-03-2019 om 14:13 schreef Laurent Pinchart: > > On Fri, Mar 01, 2019 at 01:56:22PM +0100, Maarten Lankhorst wrote: > >> Convert rcar-du to using __drm_atomic_helper_crtc_reset(), instead of > >> writing its own version. Instead of open coding destroy_state(), call > >> it directly for freeing the old state. > > I don't think the second sentence applies to this patch. > > > >> Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> > >> Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com> > >> Cc: Kieran Bingham <kieran.bingham+renesas@ideasonboard.com> > >> Cc: linux-renesas-soc@vger.kernel.org > >> --- > >> drivers/gpu/drm/rcar-du/rcar_du_crtc.c | 11 +++-------- > >> 1 file changed, 3 insertions(+), 8 deletions(-) > >> > >> diff --git a/drivers/gpu/drm/rcar-du/rcar_du_crtc.c b/drivers/gpu/drm/rcar-du/rcar_du_crtc.c > >> index 4cdea14d552f..7766551e67fc 100644 > >> --- a/drivers/gpu/drm/rcar-du/rcar_du_crtc.c > >> +++ b/drivers/gpu/drm/rcar-du/rcar_du_crtc.c > >> @@ -891,22 +891,17 @@ static void rcar_du_crtc_cleanup(struct drm_crtc *crtc) > >> > >> static void rcar_du_crtc_reset(struct drm_crtc *crtc) > >> { > >> - struct rcar_du_crtc_state *state; > >> + struct rcar_du_crtc_state *state = kzalloc(sizeof(*state), GFP_KERNEL); > >> > >> - if (crtc->state) { > >> + if (crtc->state) > >> rcar_du_crtc_atomic_destroy_state(crtc, crtc->state); > >> - crtc->state = NULL; > >> - } > >> > >> - state = kzalloc(sizeof(*state), GFP_KERNEL); > >> + __drm_atomic_helper_crtc_reset(crtc, &state->state); > > > > state may be NULL here if the above kzalloc() failed. Let's keep the > > original order of the function, and simply call > > __drm_atomic_helper_crtc_reset() after the NULL check below. > > There were 10 different ways crtc was implemented, I felt it was good to settle on one. > > We don't handle during reset at all, would need to start propagating this first before we should handle errors, imho. That's not the point. As state can be NULL, you could end up dereferencing a NULL pointer. The fact that the base state is the first field in the rcar_du_crtc_state structure is just luck, and shouldn't be relied on. > Looking more closely, it's the same way that errors in > rcar_du_plane_reset() are handled. :) It's not, the return value of kzalloc() is checked explicitly in rcar_du_plane_reset() before calling __drm_atomic_helper_plane_reset(). Please copy the code flow of rcar_du_plane_reset() to implement rcar_du_crtc_reset(). -- Regards, Laurent Pinchart _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel
next prev parent reply other threads:[~2019-03-01 14:36 UTC|newest] Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-03-01 12:56 [PATCH 00/17] drm: Start subclassing crtc_state Maarten Lankhorst 2019-03-01 12:56 ` [PATCH 01/17] drm/vc4: Fix memory leak during gpu reset Maarten Lankhorst 2019-03-01 12:56 ` Maarten Lankhorst 2019-03-01 22:43 ` Eric Anholt 2019-03-01 22:43 ` Eric Anholt 2019-03-01 12:56 ` [PATCH 02/17] drm/atomic: Create __drm_atomic_helper_crtc_reset() for subclassing crtc_state Maarten Lankhorst 2019-03-01 12:56 ` [PATCH 03/17] drm/docs: Fix typo in __drm_atomic_helper_connector_reset Maarten Lankhorst 2019-03-01 12:56 ` [PATCH 04/17] drm/amd: Convert to using __drm_atomic_helper_crtc_reset() for reset Maarten Lankhorst 2019-03-01 12:56 ` [PATCH 05/17] drm/mali: " Maarten Lankhorst 2019-03-01 13:37 ` Liviu Dudau 2019-03-01 12:56 ` [PATCH 06/17] drm/atmel-hlcdc: " Maarten Lankhorst 2019-03-01 12:56 ` [PATCH 07/17] drm/i915: Use the new __drm_atomic_helper_crtc_reset() helper Maarten Lankhorst 2019-03-01 12:56 ` [PATCH 08/17] drm/imx: Convert to using __drm_atomic_helper_crtc_reset() for reset Maarten Lankhorst 2019-03-01 12:56 ` [PATCH 09/17] drm/mediatek: " Maarten Lankhorst 2019-03-01 12:56 ` [PATCH 10/17] drm/msm: " Maarten Lankhorst 2019-03-04 19:23 ` Sean Paul 2019-03-01 12:56 ` [PATCH 11/17] drm/omap: " Maarten Lankhorst 2019-03-01 12:56 ` [PATCH 12/17] drm/rcar-du: " Maarten Lankhorst 2019-03-01 12:56 ` Maarten Lankhorst 2019-03-01 13:13 ` Laurent Pinchart 2019-03-01 13:13 ` Laurent Pinchart 2019-03-01 14:08 ` Maarten Lankhorst 2019-03-01 14:08 ` Maarten Lankhorst 2019-03-01 14:36 ` Laurent Pinchart [this message] 2019-03-01 14:36 ` Laurent Pinchart 2019-03-01 14:47 ` Maarten Lankhorst 2019-03-01 14:47 ` Maarten Lankhorst 2019-03-01 15:06 ` Laurent Pinchart 2019-03-01 15:06 ` Laurent Pinchart [not found] ` <20190301125627.7285-1-maarten.lankhorst-VuQAYsv1563Yd54FQh9/CA@public.gmane.org> 2019-03-01 12:56 ` [PATCH 13/17] drm/rockchip: " Maarten Lankhorst 2019-03-18 18:07 ` Heiko Stübner 2019-03-01 12:56 ` [PATCH 14/17] drm/tegra: " Maarten Lankhorst 2019-03-04 13:02 ` Thierry Reding 2019-03-01 12:56 ` [PATCH 15/17] drm/vc4: " Maarten Lankhorst 2019-03-01 22:47 ` Eric Anholt 2019-03-04 13:51 ` Maarten Lankhorst 2019-03-01 12:56 ` [PATCH 16/17] drm/vkms: " Maarten Lankhorst 2019-03-06 22:43 ` Rodrigo Siqueira 2019-04-25 9:41 ` Maarten Lankhorst 2019-03-01 12:56 ` [PATCH 17/17] drm/vmwgfx: " Maarten Lankhorst 2019-03-01 13:23 ` ✗ Fi.CI.CHECKPATCH: warning for drm: Start subclassing crtc_state Patchwork 2019-03-01 13:27 ` ✗ Fi.CI.SPARSE: " Patchwork 2019-03-01 13:45 ` ✓ Fi.CI.BAT: success " Patchwork 2019-03-01 17:03 ` ✓ Fi.CI.IGT: " Patchwork
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20190301143640.GD32244@pendragon.ideasonboard.com \ --to=laurent.pinchart@ideasonboard.com \ --cc=dri-devel@lists.freedesktop.org \ --cc=intel-gfx@lists.freedesktop.org \ --cc=kieran.bingham+renesas@ideasonboard.com \ --cc=linux-renesas-soc@vger.kernel.org \ --cc=maarten.lankhorst@linux.intel.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.