ret = fdt_property_placeholder(fdt, "data", sbuf.st_size, &ptr);
if (ret)
- return ret;
+ goto err;
ret = read(fd, ptr, sbuf.st_size);
if (ret != sbuf.st_size) {
fprintf(stderr, "%s: Can't read %s: %s\n",
params->cmdname, fname, strerror(errno));
goto err;
}
+ close(fd);
return 0;
err:
if (ret != size) {
fprintf(stderr, "%s: Can't write %s: %s\n",
params->cmdname, fname, strerror(errno));
- close(fd);
goto err;
}
close(fd);
if (fd < 0) {
fprintf(stderr, "%s: Can't open %s: %s\n",
params->cmdname, fname, strerror(errno));
- ret = -EIO;
- goto err;
+ free(fdt);
+ return -EIO;
}
if (write(fd, fdt, new_size) != new_size) {
debug("%s: Failed to write external data to file %s\n",