[U-Boot] [PATCH] Fix bad return value checks (detected with Coccinelle)
Thomas Huth
huth at tuxfamily.org
Sat Aug 29 11:59:34 CEST 2015
Am Tue, 25 Aug 2015 17:09:40 +0200
schrieb Thomas Huth <huth at tuxfamily.org>:
> In the "Getting Started with Coccinelle - KVM edition" presentation
> that has been held by Julia Lawall at the KVM forum 2015 (see the
> slides at
> http://events.linuxfoundation.org/sites/events/files/slides/tutorial_kvm_0.pdf),
> she pointed out some bad return value checks in U-Boot that can be
> detected with Coccinelle by using the following config file:
>
> @@
> identifier x,y;
> identifier f;
> statement S;
> @@
> x = f(...);
> (
> if (x < 0) S
> |
> if (
> - y
> + x
> < 0) S
> )
>
> This patch now fixes these issues.
>
> Signed-off-by: Thomas Huth <huth at tuxfamily.org>
> ---
> Note: I haven't tested this patch at all, so please review carefully.
> I just wanted to let you know about these issues in case you haven't
> been aware of them yet. And in case if somebody else already reported
> them, please excuse the double information, I wasn't reading the
> u-boot mailing list so far yet.
>
> diff -u -p a/board/samsung/origen/tools/mkorigenspl.c
> b/board/samsung/origen/tools/mkorigenspl.c ---
> a/board/samsung/origen/tools/mkorigenspl.c +++
> b/board/samsung/origen/tools/mkorigenspl.c @@ -52,7 +52,7 @@ int
> main(int argc, char **argv) }
>
> ofd = open(argv[2], O_WRONLY | O_CREAT | O_TRUNC, FILE_PERM);
> - if (ifd < 0) {
> + if (ofd < 0) {
> fprintf(stderr, "%s: Can't open %s: %s\n",
> argv[0], argv[2], strerror(errno));
> if (ifd)
> diff -u -p a/board/samsung/smdkv310/tools/mksmdkv310spl.c
> b/board/samsung/smdkv310/tools/mksmdkv310spl.c ---
> a/board/samsung/smdkv310/tools/mksmdkv310spl.c +++
> b/board/samsung/smdkv310/tools/mksmdkv310spl.c @@ -50,7 +50,7 @@ int
> main(int argc, char **argv) }
>
> ofd = open(argv[2], O_WRONLY | O_CREAT | O_TRUNC, FILE_PERM);
> - if (ifd < 0) {
> + if (ofd < 0) {
> fprintf(stderr, "%s: Can't open %s: %s\n",
> argv[0], argv[2], strerror(errno));
> if (ifd)
> diff -u -p a/drivers/hwmon/lm81.c b/drivers/hwmon/lm81.c
> --- a/drivers/hwmon/lm81.c
> +++ b/drivers/hwmon/lm81.c
> @@ -90,7 +90,7 @@ int dtt_init_one(int sensor)
> if (adr < 0)
> return 1;
> rev = dtt_read (sensor, DTT_REV);
> - if (adr < 0)
> + if (rev < 0)
> return 1;
>
> debug ("DTT: Found LM81@%x Rev: %d\n", adr, rev);
> diff -u -p a/tools/fit_check_sign.c b/tools/fit_check_sign.c
> --- a/tools/fit_check_sign.c
> +++ b/tools/fit_check_sign.c
> @@ -75,7 +75,7 @@ int main(int argc, char **argv)
> if (ffd < 0)
> return EXIT_FAILURE;
> kfd = mmap_fdt(cmdname, keyfile, 0, &key_blob, &ksbuf,
> false);
> - if (ffd < 0)
> + if (kfd < 0)
> return EXIT_FAILURE;
>
> image_set_host_blob(key_blob);
> diff -u -p a/tools/mkexynosspl.c b/tools/mkexynosspl.c
> --- a/tools/mkexynosspl.c
> +++ b/tools/mkexynosspl.c
> @@ -110,7 +110,7 @@ int main(int argc, char **argv)
> }
>
> ofd = open(argv[of_index], O_WRONLY | O_CREAT | O_TRUNC,
> FILE_PERM);
> - if (ifd < 0) {
> + if (ofd < 0) {
> fprintf(stderr, "%s: Can't open %s: %s\n",
> prog_name, argv[of_index], strerror(errno));
> exit(EXIT_FAILURE);
ping ... now with maintainers on CC: :-)
Regards,
Thomas
More information about the U-Boot
mailing list