On Tue, Sep 18, 2018 at 03:49:15PM +1000, Jonathan Gray wrote:
> Index: amdisplay.c
> ===================================================================
> RCS file: /cvs/src/sys/arch/armv7/omap/amdisplay.c,v
> retrieving revision 1.7
> diff -u -p -r1.7 amdisplay.c
> --- amdisplay.c 25 Oct 2017 14:34:22 -0000 1.7
> +++ amdisplay.c 18 Sep 2018 05:12:41 -0000
> @@ -272,6 +272,7 @@ amdisplay_attach(struct device *parent,
>
> if (rasops_init(&sc->sc_ro, 200, 200)) {
> printf("%s: no rasops\n", DEVNAME(sc));
> + free(edid_buf, M_DEVBUF, EDID_LENGTH);
> amdisplay_detach(self, 0);
> return;
> }
>
I think it is better to free the edid_buf further up in that function
since it is unused after calling edid_parse(edid_buf, &sc->sc_edid) on
line 215. So currently there is still a leak at the end of the function.
--
:wq Claudio
Index: arch/armv7/omap/amdisplay.c
===================================================================
RCS file: /cvs/src/sys/arch/armv7/omap/amdisplay.c,v
retrieving revision 1.7
diff -u -p -r1.7 amdisplay.c
--- arch/armv7/omap/amdisplay.c 25 Oct 2017 14:34:22 -0000 1.7
+++ arch/armv7/omap/amdisplay.c 18 Sep 2018 06:32:43 -0000
@@ -219,6 +219,8 @@ amdisplay_attach(struct device *parent,
return;
}
+ free(edid_buf, M_DEVBUF, EDID_LENGTH);
+
#ifdef LCD_DEBUG
edid_print(&sc->sc_edid);
#endif
@@ -246,7 +248,6 @@ amdisplay_attach(struct device *parent,
/* configure DMA framebuffer */
if (amdisplay_setup_dma(sc)) {
printf("%s: couldn't allocate DMA framebuffer\n", DEVNAME(sc));
- free(edid_buf, M_DEVBUF, EDID_LENGTH);
amdisplay_detach(self, 0);
return;
}