Hi Stephen, On 16 February 2016 at 16:34, Stephen Warren <swar...@wwwdotorg.org> wrote: > On 02/14/2016 07:16 PM, Simon Glass wrote: >> >> Update the host driver to support driver model for block devices. A future >> commit will remove the old code, but for now it is useful to be able to >> use >> it both with and without CONFIG_BLK. > > >> diff --git a/drivers/block/sandbox.c b/drivers/block/sandbox.c > > >> +#ifdef CONFIG_BLK >> +int host_dev_bind(int devnum, char *filename) >> +{ >> + struct host_block_dev *host_dev; >> + struct udevice *dev; >> + char dev_name[20], *str, *fname; > > ... >> >> + sprintf(dev_name, "host%d", devnum); > > > Use snprintf() to avoid overflow?
OK. > >> + str = strdup(dev_name); >> + if (!str) >> + return -ENOMEM; >> + fname = strdup(filename); >> + if (!fname) { >> + free(str); >> + return -ENOMEM; >> + } > > > Do those get free()d somewhere on unbind? > > Actually, I don't see any unbind() function in this file (even before this > patch). The unbinding is at the top of this function - if you overwrite an existing device. It's a bit clunky. I suspect we can do better when everything is on driver model. There is no free(). This is a memory leak. It only affects sandbox though. Actually we have similar memory leaks elsewhere when device names are allocated, for example with GPIO. I haven't considered it a high priority so far, but one possible fix is to add a device flag to indicate that the name should be free on unbind(). Regards, Simon _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot