Message ID | 55DC8534.6060900@tuxfamily.org |
---|---|
State | Accepted |
Delegated to: | Tom Rini |
Headers | show |
Am Tue, 25 Aug 2015 17:09:40 +0200 schrieb Thomas Huth <huth@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@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
On Tue, Aug 25, 2015 at 12:09 PM, Thomas Huth <huth@tuxfamily.org> wrote: > This patch now fixes these issues. > > Signed-off-by: Thomas Huth <huth@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. You should split these changes into multiple patches. Regards, Fabio Estevam
On Tue, Aug 25, 2015 at 05:09:40PM +0200, Thomas Huth wrote: > 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@tuxfamily.org> Applied to u-boot/master, thanks!
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);
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@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.