[PATCH v4] fastboot: add UUU command UCmd and ACmd support
Patrick DELAUNAY
patrick.delaunay at foss.st.com
Mon Feb 8 17:56:20 CET 2021
Hi Heiko,
On 2/8/21 12:38 PM, Heiko Schocher wrote:
> add support for the UUU commands ACmd and UCmd.
>
> Enable them through the Kconfig option
> CONFIG_FASTBOOT_UUU_SUPPORT
>
> base was commit in NXP kernel
> 9b149c2a2882: ("MLK-18591-3 android: Add FSL android fastboot support")
>
> and ported it to current mainline. Tested this patch
> on imx6ul based board.
>
> Signed-off-by: Heiko Schocher <hs at denx.de>
> ---
>
> azure build was fine:
> https://dev.azure.com/hs0298/hs/_build/results?buildId=59&view=results
>
> Changes in v4:
> - fixed missing parts from Sean Anderson patches
> lost while rebased to tree from lukasz
>
> Changes in v3:
> - rebased to https://github.com/lmajewski/u-boot-dfu/commits/testing
> as Lukasz mentioned.
>
> Changes in v2:
> - remove unused FSL_FASTBOOT option
> - add comment from Roman:
> do not enable this option per default
> add Kconfig comment that enabling this option may
> introduce a security issue.
>
> doc/android/fastboot-protocol.rst | 5 +++
> doc/android/fastboot.rst | 2 +
> drivers/fastboot/Kconfig | 9 +++++
> drivers/fastboot/fb_command.c | 62 +++++++++++++++++++++++++++++++
> drivers/usb/gadget/f_fastboot.c | 17 +++++++++
> include/fastboot.h | 7 ++++
> 6 files changed, 102 insertions(+)
>
(...)
> diff --git a/drivers/fastboot/fb_command.c b/drivers/fastboot/fb_command.c
> index 41fc8d7904d..960e73089e0 100644
> --- a/drivers/fastboot/fb_command.c
> +++ b/drivers/fastboot/fb_command.c
(...)
> +
> +static char g_a_cmd_buff[64];
> +
> +void fastboot_acmd_complete(void)
> +{
> + run_command(g_a_cmd_buff, 0);
> +}
> +
> +/**
> + * run_acmd() - Execute the ACmd command
> + *
> + * @cmd_parameter: Pointer to command parameter
> + * @response: Pointer to fastboot response buffer
> + */
> +static void run_acmd(char *cmd_parameter, char *response)
> +{
> + if (!cmd_parameter) {
> + pr_err("missing slot suffix\n");
> + fastboot_fail("missing command", response);
> + return;
> + }
> +
> + strcpy(g_a_cmd_buff, cmd_parameter);
to avoid overflow:
+ strncpy (g_a_cmd_buff, cmd_parameter, sizeof(g_a_cmd_buff));
or check strlen(cmd_parameter) ?
+ if (check strlen(cmd_parameter) > sizeof(g_a_cmd_buff)) {
+ pr_err("too long command\n");
+ fastboot_fail("too long command", response);
+ return;
+ }
> + fastboot_okay(NULL, response);
> +}
> +#endif
> +
> /**
> * reboot_bootloader() - Sets reboot bootloader flag.
> *
> diff --git a/drivers/usb/gadget/f_fastboot.c b/drivers/usb/gadget/f_fastboot.c
> index 950cc119495..8ba55aab9f8 100644
> --- a/drivers/usb/gadget/f_fastboot.c
> +++ b/drivers/usb/gadget/f_fastboot.c
> @@ -494,6 +494,18 @@ static void do_bootm_on_complete(struct usb_ep *ep, struct usb_request *req)
> do_exit_on_complete(ep, req);
> }
>
(...)
Anyway, except this remark.
Acked-by: Patrick Delaunay <patrick.delaunay at foss.st.com>
Regards
Patrick
More information about the U-Boot
mailing list