summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2018-01-29 20:43:42 +0100
committerSascha Hauer <s.hauer@pengutronix.de>2018-01-30 09:44:28 +0100
commitd804ae2a602c9b192ee6d709af0cb7b4b8c3cd74 (patch)
tree4f43649c2511caf9bf674ea6bb58df0850857ec9 /drivers
parente0c76628bfd150e9fd7f8f0b62e5d461c6cb4a12 (diff)
downloadbarebox-d804ae2a602c9b192ee6d709af0cb7b4b8c3cd74.tar.gz
barebox-d804ae2a602c9b192ee6d709af0cb7b4b8c3cd74.tar.xz
usb: gadget: fastboot: allow data.image to be const
Do not directly store the dynamically allocated memory in data.image as we want to make that pointer const and then no longer can call free() on it. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/usb/gadget/f_fastboot.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/drivers/usb/gadget/f_fastboot.c b/drivers/usb/gadget/f_fastboot.c
index 2ba5977239..87a43cc60e 100644
--- a/drivers/usb/gadget/f_fastboot.c
+++ b/drivers/usb/gadget/f_fastboot.c
@@ -935,6 +935,7 @@ static void cb_flash(struct usb_ep *ep, struct usb_request *req, const char *cmd
}
if (IS_ENABLED(CONFIG_BAREBOX_UPDATE) && filetype_is_barebox_image(filetype)) {
+ void *image;
struct bbu_data data = {
.devicefile = filename,
.imagefile = FASTBOOT_TMPFILE,
@@ -946,15 +947,17 @@ static void cb_flash(struct usb_ep *ep, struct usb_request *req, const char *cmd
fastboot_tx_print(f_fb, "INFOThis is a barebox image...");
- data.image = read_file(data.imagefile, &data.len);
- if (!data.image) {
+ image = read_file(data.imagefile, &data.len);
+ if (!image) {
fastboot_tx_print(f_fb, "FAILreading barebox");
return;
}
+ data.image = image;
+
ret = barebox_update(&data);
- free(data.image);
+ free(image);
if (ret) {
fastboot_tx_print(f_fb, "FAILupdate barebox: %s", strerror(-ret));