From patchwork Fri Jul 14 09:25:13 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [RESEND,01/14] ide: avoid warning for timings calculation From: Arnd Bergmann X-Patchwork-Id: 166967 Message-Id: <20170714092540.1217397-2-arnd@arndb.de> To: linux-kernel@vger.kernel.org, "David S. Miller" Cc: Arnd Bergmann , Greg Kroah-Hartman , dri-devel@lists.freedesktop.org, linux-ide@vger.kernel.org, Tejun Heo , akpm@linux-foundation.org, Linus Torvalds , Guenter Roeck , linux-media@vger.kernel.org Date: Fri, 14 Jul 2017 11:25:13 +0200 gcc-7 warns about the result of a constant multiplication used as a boolean: drivers/ide/ide-timings.c: In function 'ide_timing_quantize': drivers/ide/ide-timings.c:112:24: error: '*' in boolean context, suggest '&&' instead [-Werror=int-in-bool-context] q->setup = EZ(t->setup * 1000, T); This slightly rearranges the macro to simplify the code and avoid the warning at the same time. Signed-off-by: Arnd Bergmann --- drivers/ide/ide-timings.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/drivers/ide/ide-timings.c b/drivers/ide/ide-timings.c index 0e05f75934c9..1858e3ce3993 100644 --- a/drivers/ide/ide-timings.c +++ b/drivers/ide/ide-timings.c @@ -104,19 +104,19 @@ u16 ide_pio_cycle_time(ide_drive_t *drive, u8 pio) EXPORT_SYMBOL_GPL(ide_pio_cycle_time); #define ENOUGH(v, unit) (((v) - 1) / (unit) + 1) -#define EZ(v, unit) ((v) ? ENOUGH(v, unit) : 0) +#define EZ(v, unit) ((v) ? ENOUGH((v) * 1000, unit) : 0) static void ide_timing_quantize(struct ide_timing *t, struct ide_timing *q, int T, int UT) { - q->setup = EZ(t->setup * 1000, T); - q->act8b = EZ(t->act8b * 1000, T); - q->rec8b = EZ(t->rec8b * 1000, T); - q->cyc8b = EZ(t->cyc8b * 1000, T); - q->active = EZ(t->active * 1000, T); - q->recover = EZ(t->recover * 1000, T); - q->cycle = EZ(t->cycle * 1000, T); - q->udma = EZ(t->udma * 1000, UT); + q->setup = EZ(t->setup, T); + q->act8b = EZ(t->act8b, T); + q->rec8b = EZ(t->rec8b, T); + q->cyc8b = EZ(t->cyc8b, T); + q->active = EZ(t->active, T); + q->recover = EZ(t->recover, T); + q->cycle = EZ(t->cycle, T); + q->udma = EZ(t->udma, UT); } void ide_timing_merge(struct ide_timing *a, struct ide_timing *b, From patchwork Fri Jul 14 09:25:14 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [RESEND,02/14] ata: avoid gcc-7 warning in ata_timing_quantize From: Arnd Bergmann X-Patchwork-Id: 166968 Message-Id: <20170714092540.1217397-3-arnd@arndb.de> To: linux-kernel@vger.kernel.org, Tejun Heo Cc: Damien Le Moal , Arnd Bergmann , Greg Kroah-Hartman , dri-devel@lists.freedesktop.org, linux-ide@vger.kernel.org, Geert Uytterhoeven , Hannes Reinecke , Adam Manzanares , akpm@linux-foundation.org, Mauro Carvalho Chehab , Linus Torvalds , Guenter Roeck , linux-media@vger.kernel.org Date: Fri, 14 Jul 2017 11:25:14 +0200 gcc-7 warns about the result of a constant multiplication used as a boolean: drivers/ata/libata-core.c: In function 'ata_timing_quantize': drivers/ata/libata-core.c:3164:30: warning: '*' in boolean context, suggest '&&' instead [-Wint-in-bool-context] This slightly rearranges the macro to simplify the code and avoid the warning at the same time. Signed-off-by: Arnd Bergmann --- drivers/ata/libata-core.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c index fa7dd4394c02..450059dd06ba 100644 --- a/drivers/ata/libata-core.c +++ b/drivers/ata/libata-core.c @@ -3231,19 +3231,19 @@ static const struct ata_timing ata_timing[] = { }; #define ENOUGH(v, unit) (((v)-1)/(unit)+1) -#define EZ(v, unit) ((v)?ENOUGH(v, unit):0) +#define EZ(v, unit) ((v)?ENOUGH(((v) * 1000), unit):0) static void ata_timing_quantize(const struct ata_timing *t, struct ata_timing *q, int T, int UT) { - q->setup = EZ(t->setup * 1000, T); - q->act8b = EZ(t->act8b * 1000, T); - q->rec8b = EZ(t->rec8b * 1000, T); - q->cyc8b = EZ(t->cyc8b * 1000, T); - q->active = EZ(t->active * 1000, T); - q->recover = EZ(t->recover * 1000, T); - q->dmack_hold = EZ(t->dmack_hold * 1000, T); - q->cycle = EZ(t->cycle * 1000, T); - q->udma = EZ(t->udma * 1000, UT); + q->setup = EZ(t->setup, T); + q->act8b = EZ(t->act8b, T); + q->rec8b = EZ(t->rec8b, T); + q->cyc8b = EZ(t->cyc8b, T); + q->active = EZ(t->active, T); + q->recover = EZ(t->recover, T); + q->dmack_hold = EZ(t->dmack_hold, T); + q->cycle = EZ(t->cycle, T); + q->udma = EZ(t->udma, UT); } void ata_timing_merge(const struct ata_timing *a, const struct ata_timing *b, From patchwork Fri Jul 14 09:25:15 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [RESEND,03/14] drm/vmwgfx: avoid gcc-7 parentheses warning From: Arnd Bergmann X-Patchwork-Id: 166969 Message-Id: <20170714092540.1217397-4-arnd@arndb.de> To: linux-kernel@vger.kernel.org, VMware Graphics , Sinclair Yeh , Thomas Hellstrom , David Airlie Cc: Arnd Bergmann , Greg Kroah-Hartman , dri-devel@lists.freedesktop.org, linux-ide@vger.kernel.org, Brian Paul , Tejun Heo , akpm@linux-foundation.org, Linus Torvalds , Guenter Roeck , linux-media@vger.kernel.org Date: Fri, 14 Jul 2017 11:25:15 +0200 gcc-7 warns about slightly suspicious code in vmw_cmd_invalid: drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c: In function 'vmw_cmd_invalid': drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c:522:23: error: the omitted middle operand in ?: will always be 'true', suggest explicit middle operand [-Werror=parentheses] The problem is that it is mixing boolean and integer values here. I assume that the code actually works correctly, so making it use a literal '1' instead of the implied 'true' makes it more readable and avoids the warning. The code has been in this file since the start, but it could make sense to backport this patch to stable to make it build cleanly with gcc-7. Fixes: fb1d9738ca05 ("drm/vmwgfx: Add DRM driver for VMware Virtual GPU") Reviewed-by: Sinclair Yeh Signed-off-by: Arnd Bergmann --- Originally submitted on Nov 16, but for some reason it never appeared upstream. The patch is still needed as of v4.11-rc2 --- drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c b/drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c index c7b53d987f06..3f343e55972a 100644 --- a/drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c @@ -519,7 +519,7 @@ static int vmw_cmd_invalid(struct vmw_private *dev_priv, struct vmw_sw_context *sw_context, SVGA3dCmdHeader *header) { - return capable(CAP_SYS_ADMIN) ? : -EINVAL; + return capable(CAP_SYS_ADMIN) ? 1 : -EINVAL; } static int vmw_cmd_ok(struct vmw_private *dev_priv, From patchwork Fri Jul 14 09:25:16 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [04/14] x86: math-emu: avoid -Wint-in-bool-context warning From: Arnd Bergmann X-Patchwork-Id: 166972 Message-Id: <20170714092540.1217397-5-arnd@arndb.de> To: linux-kernel@vger.kernel.org, Bill Metzenthen , x86@kernel.org Cc: Arnd Bergmann , Greg Kroah-Hartman , dri-devel@lists.freedesktop.org, linux-ide@vger.kernel.org, Ingo Molnar , "H. Peter Anvin" , Tejun Heo , akpm@linux-foundation.org, Linus Torvalds , Thomas Gleixner , Guenter Roeck , linux-media@vger.kernel.org Date: Fri, 14 Jul 2017 11:25:16 +0200 The setsign() macro gets called with an integer argument in a few places, leading to a harmless warning in gcc-7: arch/x86/math-emu/reg_add_sub.c: In function 'FPU_add': arch/x86/math-emu/reg_add_sub.c:80:48: error: ?: using integer constants in boolean context [-Werror=int-in-bool-context] This turns the integer into a boolean expression by comparing it to zero. Signed-off-by: Arnd Bergmann --- arch/x86/math-emu/fpu_emu.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/x86/math-emu/fpu_emu.h b/arch/x86/math-emu/fpu_emu.h index afbc4d805d66..c9c320dccca1 100644 --- a/arch/x86/math-emu/fpu_emu.h +++ b/arch/x86/math-emu/fpu_emu.h @@ -157,7 +157,7 @@ extern u_char const data_sizes_16[32]; #define signbyte(a) (((u_char *)(a))[9]) #define getsign(a) (signbyte(a) & 0x80) -#define setsign(a,b) { if (b) signbyte(a) |= 0x80; else signbyte(a) &= 0x7f; } +#define setsign(a,b) { if ((b) != 0) signbyte(a) |= 0x80; else signbyte(a) &= 0x7f; } #define copysign(a,b) { if (getsign(a)) signbyte(b) |= 0x80; \ else signbyte(b) &= 0x7f; } #define changesign(a) { signbyte(a) ^= 0x80; } From patchwork Fri Jul 14 09:25:17 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [05/14] isdn: isdnloop: suppress a gcc-7 warning From: Arnd Bergmann X-Patchwork-Id: 166970 Message-Id: <20170714092540.1217397-6-arnd@arndb.de> To: linux-kernel@vger.kernel.org, Karsten Keil , "David S. Miller" Cc: Arnd Bergmann , Greg Kroah-Hartman , dri-devel@lists.freedesktop.org, linux-ide@vger.kernel.org, netdev@vger.kernel.org, Tejun Heo , akpm@linux-foundation.org, Linus Torvalds , Guenter Roeck , linux-media@vger.kernel.org Date: Fri, 14 Jul 2017 11:25:17 +0200 We test whether a bit is set in a mask here, which is correct but gcc warns about it as it thinks it might be confusing: drivers/isdn/isdnloop/isdnloop.c:412:37: error: ?: using integer constants in boolean context, the expression will always evaluate to 'true' [-Werror=int-in-bool-context] This replaces the negation of an integer with an equivalent comparison to zero, which gets rid of the warning. Signed-off-by: Arnd Bergmann --- drivers/isdn/isdnloop/isdnloop.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/isdn/isdnloop/isdnloop.c b/drivers/isdn/isdnloop/isdnloop.c index 6ffd13466b8c..5792928b944d 100644 --- a/drivers/isdn/isdnloop/isdnloop.c +++ b/drivers/isdn/isdnloop/isdnloop.c @@ -409,7 +409,7 @@ isdnloop_sendbuf(int channel, struct sk_buff *skb, isdnloop_card *card) return -EINVAL; } if (len) { - if (!(card->flags & (channel) ? ISDNLOOP_FLAGS_B2ACTIVE : ISDNLOOP_FLAGS_B1ACTIVE)) + if ((card->flags & (channel) ? ISDNLOOP_FLAGS_B2ACTIVE : ISDNLOOP_FLAGS_B1ACTIVE) == 0) return 0; if (card->sndcount[channel] > ISDNLOOP_MAX_SQUEUE) return 0; From patchwork Fri Jul 14 09:25:18 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Subject: [06/14] acpi: thermal: fix gcc-6/ccache warning From: Arnd Bergmann X-Patchwork-Id: 166971 Message-Id: <20170714092540.1217397-7-arnd@arndb.de> To: linux-kernel@vger.kernel.org, Zhang Rui , "Rafael J. Wysocki" , Len Brown Cc: Arnd Bergmann , linux-acpi@vger.kernel.org, Greg Kroah-Hartman , dri-devel@lists.freedesktop.org, linux-ide@vger.kernel.org, Tejun Heo , akpm@linux-foundation.org, Linus Torvalds , Guenter Roeck , linux-media@vger.kernel.org Date: Fri, 14 Jul 2017 11:25:18 +0200 SW4gc29tZSBjb25maWd1cmF0aW9ucywgdG9wb2xvZ3lfcGh5c2ljYWxfcGFja2FnZV9pZCgpIGlz IHRyaXZpYWxseQpkZWZpbmVkIGFzICctMScgZm9yIGFueSBpbnB1dCwgcmVzdWx0aW5nIGEgY29t cGFyaXNvbiB0aGF0IGlzCmFsd2F5cyB0cnVlOgoKZHJpdmVycy9hY3BpL3Byb2Nlc3Nvcl90aGVy bWFsLmM6IEluIGZ1bmN0aW9uIOKAmGNwdWZyZXFfc2V0X2N1cl9zdGF0ZeKAmToKZHJpdmVycy9h Y3BpL3Byb2Nlc3Nvcl90aGVybWFsLmM6MTM3OjM2OiBlcnJvcjogc2VsZi1jb21wYXJpc29uIGFs d2F5cyBldmFsdWF0ZXMgdG8gdHJ1ZSBbLVdlcnJvcj10YXV0b2xvZ2ljYWwtY29tcGFyZV0KCkJ5 IGludHJvZHVjaW5nIGEgdGVtcG9yYXJ5IHZhcmlhYmxlLCB3ZSBjYW4gdGVsbCBnY2MgdGhhdCB0 aGlzIGlzCmludGVudGlvbmFsLgoKU2lnbmVkLW9mZi1ieTogQXJuZCBCZXJnbWFubiA8YXJuZEBh cm5kYi5kZT4KLS0tCiBkcml2ZXJzL2FjcGkvcHJvY2Vzc29yX3RoZXJtYWwuYyB8IDYgKysrKy0t CiAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL2RyaXZlcnMvYWNwaS9wcm9jZXNzb3JfdGhlcm1hbC5jIGIvZHJpdmVycy9hY3BpL3By b2Nlc3Nvcl90aGVybWFsLmMKaW5kZXggNTljM2E1ZDFlNjAwLi40MTFmM2E3ZjRhN2MgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvYWNwaS9wcm9jZXNzb3JfdGhlcm1hbC5jCisrKyBiL2RyaXZlcnMvYWNw aS9wcm9jZXNzb3JfdGhlcm1hbC5jCkBAIC0xMjIsMjAgKzEyMiwyMiBAQCBzdGF0aWMgaW50IGNw dWZyZXFfZ2V0X2N1cl9zdGF0ZSh1bnNpZ25lZCBpbnQgY3B1KQogc3RhdGljIGludCBjcHVmcmVx X3NldF9jdXJfc3RhdGUodW5zaWduZWQgaW50IGNwdSwgaW50IHN0YXRlKQogewogCWludCBpOwor CWludCBpZDsKIAogCWlmICghY3B1X2hhc19jcHVmcmVxKGNwdSkpCiAJCXJldHVybiAwOwogCiAJ cmVkdWN0aW9uX3BjdGcoY3B1KSA9IHN0YXRlOwogCisJaWQgPSB0b3BvbG9neV9waHlzaWNhbF9w YWNrYWdlX2lkKGNwdSk7CisKIAkvKgogCSAqIFVwZGF0ZSBhbGwgdGhlIENQVXMgaW4gdGhlIHNh bWUgcGFja2FnZSBiZWNhdXNlIHRoZXkgYWxsCiAJICogY29udHJpYnV0ZSB0byB0aGUgdGVtcGVy YXR1cmUgYW5kIG9mdGVuIHNoYXJlIHRoZSBzYW1lCiAJICogZnJlcXVlbmN5LgogCSAqLwogCWZv cl9lYWNoX29ubGluZV9jcHUoaSkgewotCQlpZiAodG9wb2xvZ3lfcGh5c2ljYWxfcGFja2FnZV9p ZChpKSA9PQotCQkgICAgdG9wb2xvZ3lfcGh5c2ljYWxfcGFja2FnZV9pZChjcHUpKQorCQlpZiAo dG9wb2xvZ3lfcGh5c2ljYWxfcGFja2FnZV9pZChpKSA9PSBpZCkKIAkJCWNwdWZyZXFfdXBkYXRl X3BvbGljeShpKTsKIAl9CiAJcmV0dXJuIDA7Cg== From patchwork Tue Jul 18 19:53:40 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Subject: [07/14] proc/kcore: hide a harmless warning From: Arnd Bergmann X-Patchwork-Id: 167651 Message-Id: To: Ard Biesheuvel Cc: Pratyush Anand , Kees Cook , Greg Kroah-Hartman , "linux-kernel@vger.kernel.org" , dri-devel , IDE-ML , Jiri Olsa , Tejun Heo , Andrew Morton , Linus Torvalds , Ingo Molnar , Guenter Roeck , Linux Media Mailing List Date: Tue, 18 Jul 2017 21:53:40 +0200 T24gRnJpLCBKdWwgMTQsIDIwMTcgYXQgMjoyOCBQTSwgQXJkIEJpZXNoZXV2ZWwKPGFyZC5iaWVz aGV1dmVsQGxpbmFyby5vcmc+IHdyb3RlOgo+IE9uIDE0IEp1bHkgMjAxNyBhdCAxMDoyNSwgQXJu ZCBCZXJnbWFubiA8YXJuZEBhcm5kYi5kZT4gd3JvdGU6Cj4+IGdjYyB3YXJucyB3aGVuIE1PRFVM RVNfVkFERFIvRU5EIGlzIGRlZmluZWQgdG8gdGhlIHNhbWUgdmFsdWUgYXMKPj4gVk1BTExPQ19T VEFSVC9WTUFMTE9DX0VORCwgZS5nLiBvbiB4ODYtMzI6Cj4+Cj4+IGZzL3Byb2Mva2NvcmUuYzog SW4gZnVuY3Rpb24g4oCYYWRkX21vZHVsZXNfcmFuZ2XigJk6Cj4+IGZzL3Byb2Mva2NvcmUuYzo2 MjI6MTYxOiBlcnJvcjogc2VsZi1jb21wYXJpc29uIGFsd2F5cyBldmFsdWF0ZXMgdG8gZmFsc2Ug Wy1XZXJyb3I9dGF1dG9sb2dpY2FsLWNvbXBhcmVdCj4+ICAgaWYgKC8qTU9EVUxFU19WQUREUiAh PSBWTUFMTE9DX1NUQVJUICYmICovTU9EVUxFU19FTkQgIT0gVk1BTExPQ19FTkQpIHsKPj4KPgo+ IERvZXMgaXQgb2NjdXIgZm9yIHN1YnRyYWN0aW9uIGFzIHdlbGw/IE9yIG9ubHkgZm9yIGNvbXBh cmlzb24/CgpUaGlzIHJlcGxhY2VtZW50IHBhdGNoIHdvdWxkIGFsc28gYWRkcmVzcyB0aGUgd2Fy bmluZzoKCgpJIGhhdmUgYWxzbyB2ZXJpZmllZCB0aGF0IGZvdXIgb2YgdGhlIDE0IHBhdGNoZXMg YXJlIG5vdCBuZWVkZWQgd2hlbiBidWlsZGluZwp3aXRob3V0IGNjYWNoZSwgdGhpcyBpcyBvbmUg b2YgdGhlbToKCiBhY3BpOiB0aGVybWFsOiBmaXggZ2NjLTYvY2NhY2hlIHdhcm5pbmcKIHByb2Mv a2NvcmU6IGhpZGUgYSBoYXJtbGVzcyB3YXJuaW5nCiBTRkk6IGZpeCB0YXV0b2xvZ2ljYWwtY29t cGFyZSB3YXJuaW5nCiBbbWVkaWFdIGZpeCB3YXJuaW5nIG9uIHY0bDJfc3ViZGV2X2NhbGwoKSBy ZXN1bHQgaW50ZXJwcmV0ZWQgYXMgYm9vbAoKTm90IHN1cmUgd2hhdCB0byBkbyB3aXRoIHRob3Nl LCB3ZSBjb3VsZCBlaXRoZXIgaWdub3JlIHRoZW0gYWxsIGFuZApub3QgY2FyZSBhYm91dCBjY2Fj aGUsIG9yIHdlIHRyeSB0byBhZGRyZXNzIHRoZW0gYWxsIGluIHNvbWUgd2F5LgoKICAgICAgICBB cm5kCgpkaWZmIC0tZ2l0IGEvZnMvcHJvYy9rY29yZS5jIGIvZnMvcHJvYy9rY29yZS5jCmluZGV4 IDQ1NjI5ZjRiNTQwMi4uMzU4MjRlOTg2YzJjIDEwMDY0NAotLS0gYS9mcy9wcm9jL2tjb3JlLmMK KysrIGIvZnMvcHJvYy9rY29yZS5jCkBAIC02MjMsNyArNjIzLDcgQEAgc3RhdGljIHZvaWQgX19p bml0IHByb2Nfa2NvcmVfdGV4dF9pbml0KHZvaWQpCiBzdHJ1Y3Qga2NvcmVfbGlzdCBrY29yZV9t b2R1bGVzOwogc3RhdGljIHZvaWQgX19pbml0IGFkZF9tb2R1bGVzX3JhbmdlKHZvaWQpCiB7Ci0g ICAgICAgaWYgKE1PRFVMRVNfVkFERFIgIT0gVk1BTExPQ19TVEFSVCAmJiBNT0RVTEVTX0VORCAh PSBWTUFMTE9DX0VORCkgeworICAgICAgIGlmIChNT0RVTEVTX1ZBRERSIC0gVk1BTExPQ19TVEFS VCAmJiBNT0RVTEVTX0VORCAtIFZNQUxMT0NfRU5EKSB7CiAgICAgICAgICAgICAgICBrY2xpc3Rf YWRkKCZrY29yZV9tb2R1bGVzLCAodm9pZCAqKU1PRFVMRVNfVkFERFIsCiAgICAgICAgICAgICAg ICAgICAgICAgIE1PRFVMRVNfRU5EIC0gTU9EVUxFU19WQUREUiwgS0NPUkVfVk1BTExPQyk7CiAg ICAgICAgfQo= From patchwork Fri Jul 14 20:17:10 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [08/14] Input: adxl34x - fix gcc-7 -Wint-in-bool-context warning From: Arnd Bergmann X-Patchwork-Id: 167081 Message-Id: To: Linus Torvalds Cc: Michael Hennerich , Greg Kroah-Hartman , Dmitry Torokhov , Linux Kernel Mailing List , DRI , IDE-ML , "linux-input@vger.kernel.org" , Tejun Heo , Andrew Morton , Guenter Roeck , Linux Media Mailing List Date: Fri, 14 Jul 2017 22:17:10 +0200 On Fri, Jul 14, 2017 at 9:24 PM, Linus Torvalds wrote: > On Fri, Jul 14, 2017 at 2:25 AM, Arnd Bergmann wrote: >> FIFO_MODE is an macro expression with a '<<' operator, which >> gcc points out could be misread as a '<': > > Yeah, no, NAK again. > > We don't make the code look worse just because gcc is being a f*cking > moron about things. > > This warning is clearly pure garbage. > I looked at this one again and found a better approach, matching the check that is done a few lines later. Unless you find something wrong with that one, I'd resubmit it with the fixup below. Arnd --- a/drivers/input/misc/adxl34x.c +++ b/drivers/input/misc/adxl34x.c @@ -789,21 +789,21 @@ struct adxl34x *adxl34x_probe(struct device *dev, int irq, __set_bit(pdata->ev_code_ff, input_dev->keybit); } if (pdata->ev_code_act_inactivity) __set_bit(pdata->ev_code_act_inactivity, input_dev->keybit); ac->int_mask |= ACTIVITY | INACTIVITY; if (pdata->watermark) { ac->int_mask |= WATERMARK; - if (FIFO_MODE(pdata->fifo_mode) == 0) + if (FIFO_MODE(pdata->fifo_mode) == FIFO_BYPASS) ac->pdata.fifo_mode |= FIFO_STREAM; } else { ac->int_mask |= DATA_READY; } if (pdata->tap_axis_control & (TAP_X_EN | TAP_Y_EN | TAP_Z_EN)) ac->int_mask |= SINGLE_TAP | DOUBLE_TAP; if (FIFO_MODE(pdata->fifo_mode) == FIFO_BYPASS) ac->fifo_delay = false; From patchwork Fri Jul 14 09:30:12 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Subject: [09/14] SFI: fix tautological-compare warning From: Arnd Bergmann X-Patchwork-Id: 166975 Message-Id: <20170714093021.1341005-1-arnd@arndb.de> To: linux-kernel@vger.kernel.org, Len Brown Cc: Arnd Bergmann , Greg Kroah-Hartman , dri-devel@lists.freedesktop.org, linux-ide@vger.kernel.org, Tejun Heo , akpm@linux-foundation.org, Linus Torvalds , Guenter Roeck , linux-media@vger.kernel.org Date: Fri, 14 Jul 2017 11:30:12 +0200 V2l0aCBjY2FjaGUgaW4gY29tYmluYXRpb24gd2l0aCBnY2MtNiwgd2UgZ2V0IGEgaGFybWxlc3Mg d2FybmluZyBmb3IgdGhlIHNmaSBzdWJzeXN0ZW0sCmFzIGNjYWNoZSBvbmx5IHNlZXMgdGhlIHBy ZXByb2Nlc3NlZCBzb3VyY2U6Cgpkcml2ZXJzL3NmaS9zZmlfY29yZS5jOiBJbiBmdW5jdGlvbiDi gJhzZmlfbWFwX3RhYmxl4oCZOgpkcml2ZXJzL3NmaS9zZmlfY29yZS5jOjE3NTo1MzogZXJyb3I6 IHNlbGYtY29tcGFyaXNvbiBhbHdheXMgZXZhbHVhdGVzIHRvIHRydWUgWy1XZXJyb3I9dGF1dG9s b2dpY2FsLWNvbXBhcmVdCgpVc2luZyBhbiBpbmxpbmUgZnVuY3Rpb24gdG8gZG8gdGhlIGNvbXBh cmlzb24gdGVsbHMgdGhlIGNvbXBpbGVyIHdoYXQgaXMKZ29pbmcgb24gZXZlbiBmb3IgcHJlcHJv Y2Vzc2VkIGZpbGVzLCBhbmQgYXZvaWRzIHRoZSB3YXJuaW5nLgoKU2lnbmVkLW9mZi1ieTogQXJu ZCBCZXJnbWFubiA8YXJuZEBhcm5kYi5kZT4KLS0tCiBkcml2ZXJzL3NmaS9zZmlfY29yZS5jIHwg OSArKysrKystLS0KIDEgZmlsZSBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zZmkvc2ZpX2NvcmUuYyBiL2RyaXZlcnMvc2ZpL3Nm aV9jb3JlLmMKaW5kZXggMjk2ZGI3YTY5YzI3Li5hOGYyMzEzYTI2MTMgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvc2ZpL3NmaV9jb3JlLmMKKysrIGIvZHJpdmVycy9zZmkvc2ZpX2NvcmUuYwpAQCAtNzEs OSArNzEsMTIgQEAKIAogI2luY2x1ZGUgInNmaV9jb3JlLmgiCiAKLSNkZWZpbmUgT05fU0FNRV9Q QUdFKGFkZHIxLCBhZGRyMikgXAotCSgoKHVuc2lnbmVkIGxvbmcpKGFkZHIxKSAmIFBBR0VfTUFT SykgPT0gXAotCSgodW5zaWduZWQgbG9uZykoYWRkcjIpICYgUEFHRV9NQVNLKSkKK3N0YXRpYyBp bmxpbmUgYm9vbCBvbl9zYW1lX3BhZ2UodW5zaWduZWQgbG9uZyBhZGRyMSwgdW5zaWduZWQgbG9u ZyBhZGRyMikKK3sKKwlyZXR1cm4gKGFkZHIxICYgUEFHRV9NQVNLKSA9PSAoYWRkcjIgJiBQQUdF X01BU0spOworfQorCisjZGVmaW5lIE9OX1NBTUVfUEFHRShhZGRyMSwgYWRkcjIpIG9uX3NhbWVf cGFnZSgodW5zaWduZWQgbG9uZylhZGRyMSwgKHVuc2lnbmVkIGxvbmcpYWRkcjIpCiAjZGVmaW5l IFRBQkxFX09OX1BBR0UocGFnZSwgdGFibGUsIHNpemUpIChPTl9TQU1FX1BBR0UocGFnZSwgdGFi bGUpICYmIFwKIAkJCQlPTl9TQU1FX1BBR0UocGFnZSwgdGFibGUgKyBzaXplKSkKIAo= From patchwork Fri Jul 14 09:31:03 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [10/14] staging:iio:resolver:ad2s1210 fix negative IIO_ANGL_VEL read From: Arnd Bergmann X-Patchwork-Id: 166976 Message-Id: <20170714093129.1366900-1-arnd@arndb.de> To: linux-kernel@vger.kernel.org, Lars-Peter Clausen , Michael Hennerich , Jonathan Cameron , Greg Kroah-Hartman Cc: devel@driverdev.osuosl.org, Arnd Bergmann , linux-iio@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-ide@vger.kernel.org, stable@vger.kernel.org, Peter Meerwald-Stadler , Hartmut Knaack , Tejun Heo , akpm@linux-foundation.org, Linus Torvalds , Guenter Roeck , linux-media@vger.kernel.org Date: Fri, 14 Jul 2017 11:31:03 +0200 gcc-7 points out an older regression: drivers/staging/iio/resolver/ad2s1210.c: In function 'ad2s1210_read_raw': drivers/staging/iio/resolver/ad2s1210.c:515:42: error: '<<' in boolean context, did you mean '<' ? [-Werror=int-in-bool-context] The original code had 'unsigned short' here, but incorrectly got converted to 'bool'. This reverts the regression and uses a normal type instead. Fixes: 29148543c521 ("staging:iio:resolver:ad2s1210 minimal chan spec conversion.") Cc: stable@vger.kernel.org Signed-off-by: Arnd Bergmann --- drivers/staging/iio/resolver/ad2s1210.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/staging/iio/resolver/ad2s1210.c b/drivers/staging/iio/resolver/ad2s1210.c index a6a8393d6664..3e00df74b18c 100644 --- a/drivers/staging/iio/resolver/ad2s1210.c +++ b/drivers/staging/iio/resolver/ad2s1210.c @@ -472,7 +472,7 @@ static int ad2s1210_read_raw(struct iio_dev *indio_dev, long m) { struct ad2s1210_state *st = iio_priv(indio_dev); - bool negative; + u16 negative; int ret = 0; u16 pos; s16 vel; From patchwork Fri Jul 14 09:31:04 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [11/14] IB/uverbs: fix gcc-7 type warning From: Arnd Bergmann X-Patchwork-Id: 166977 Message-Id: <20170714093129.1366900-2-arnd@arndb.de> To: linux-kernel@vger.kernel.org, Doug Ledford , Sean Hefty , Hal Rosenstock Cc: Leon Romanovsky , Arnd Bergmann , linux-rdma@vger.kernel.org, Greg Kroah-Hartman , Yishai Hadas , Matan Barak , dri-devel@lists.freedesktop.org, linux-ide@vger.kernel.org, Tejun Heo , akpm@linux-foundation.org, Linus Torvalds , Guenter Roeck , linux-media@vger.kernel.org Date: Fri, 14 Jul 2017 11:31:04 +0200 When using ccache, we get a harmless warning about the fact that we use the result of a multiplication as a condition: drivers/infiniband/core/uverbs_main.c: In function 'ib_uverbs_write': drivers/infiniband/core/uverbs_main.c:787:40: error: '*' in boolean context, suggest '&&' instead [-Werror=int-in-bool-context] drivers/infiniband/core/uverbs_main.c:787:117: error: '*' in boolean context, suggest '&&' instead [-Werror=int-in-bool-context] drivers/infiniband/core/uverbs_main.c:790:50: error: '*' in boolean context, suggest '&&' instead [-Werror=int-in-bool-context] drivers/infiniband/core/uverbs_main.c:790:151: error: '*' in boolean context, suggest '&&' instead [-Werror=int-in-bool-context] This changes the macro to explicitly check the number for a positive length, which avoids the warning. Fixes: a96e4e2ffe43 ("IB/uverbs: New macro to set pointers to NULL if length is 0 in INIT_UDATA()") Signed-off-by: Arnd Bergmann --- drivers/infiniband/core/uverbs.h | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/drivers/infiniband/core/uverbs.h b/drivers/infiniband/core/uverbs.h index 64d494a64daf..364d7de05721 100644 --- a/drivers/infiniband/core/uverbs.h +++ b/drivers/infiniband/core/uverbs.h @@ -55,12 +55,14 @@ (udata)->outlen = (olen); \ } while (0) -#define INIT_UDATA_BUF_OR_NULL(udata, ibuf, obuf, ilen, olen) \ - do { \ - (udata)->inbuf = (ilen) ? (const void __user *) (ibuf) : NULL; \ - (udata)->outbuf = (olen) ? (void __user *) (obuf) : NULL; \ - (udata)->inlen = (ilen); \ - (udata)->outlen = (olen); \ +#define INIT_UDATA_BUF_OR_NULL(udata, ibuf, obuf, ilen, olen) \ + do { \ + (udata)->inbuf = (ilen) > 0 ? \ + (const void __user *) (ibuf) : NULL; \ + (udata)->outbuf = (olen) > 0 ? \ + (void __user *) (obuf) : NULL; \ + (udata)->inlen = (ilen); \ + (udata)->outlen = (olen); \ } while (0) /* From patchwork Fri Jul 14 09:31:05 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [12/14] drm/nouveau/clk: fix gcc-7 -Wint-in-bool-context warning From: Arnd Bergmann X-Patchwork-Id: 166978 Message-Id: <20170714093129.1366900-3-arnd@arndb.de> To: linux-kernel@vger.kernel.org, Ben Skeggs , David Airlie Cc: Arnd Bergmann , Greg Kroah-Hartman , dri-devel@lists.freedesktop.org, linux-ide@vger.kernel.org, nouveau@lists.freedesktop.org, Tejun Heo , akpm@linux-foundation.org, Linus Torvalds , Guenter Roeck , linux-media@vger.kernel.org Date: Fri, 14 Jul 2017 11:31:05 +0200 gcc thinks that interpreting a multiplication result as a bool is confusing: drivers/gpu/drm/nouveau/nvkm/subdev/clk/gt215.c: In function 'read_pll': drivers/gpu/drm/nouveau/nvkm/subdev/clk/gt215.c:133:8: error: '*' in boolean context, suggest '&&' instead [-Werror=int-in-bool-context] In this instance, I think using multiplication is more intuitive than '&&', so I'm adding a comparison to zero instead to shut up the warning. To further improve readability, I also make the error case indented and leave the normal case as the final 'return' statement. Fixes: 7632b30e4b8b ("drm/nouveau/clk: namespace + nvidia gpu names (no binary change)") Signed-off-by: Arnd Bergmann --- drivers/gpu/drm/nouveau/nvkm/subdev/clk/gt215.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/clk/gt215.c b/drivers/gpu/drm/nouveau/nvkm/subdev/clk/gt215.c index 96e0941c8edd..04b4f4ccf186 100644 --- a/drivers/gpu/drm/nouveau/nvkm/subdev/clk/gt215.c +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/clk/gt215.c @@ -130,10 +130,10 @@ read_pll(struct gt215_clk *clk, int idx, u32 pll) sclk = read_clk(clk, 0x10 + idx, false); } - if (M * P) - return sclk * N / (M * P); + if (M * P == 0) + return 0; - return 0; + return sclk * N / (M * P); } static int From patchwork Fri Jul 14 09:31:06 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [13/14] iopoll: avoid -Wint-in-bool-context warning From: Arnd Bergmann X-Patchwork-Id: 166979 Message-Id: <20170714093129.1366900-4-arnd@arndb.de> To: linux-kernel@vger.kernel.org, Mark Brown , Andrew Morton Cc: Arnd Bergmann , Masahiro Yamada , Greg Kroah-Hartman , dri-devel@lists.freedesktop.org, linux-ide@vger.kernel.org, Tejun Heo , Charles Keepax , Linus Torvalds , Guenter Roeck , linux-media@vger.kernel.org Date: Fri, 14 Jul 2017 11:31:06 +0200 When we pass the result of a multiplication as the timeout, we can get a warning: drivers/mmc/host/bcm2835.c:596:149: error: '*' in boolean context, suggest '&&' instead [-Werror=int-in-bool-context] drivers/mfd/arizona-core.c:247:195: error: '*' in boolean context, suggest '&&' instead [-Werror=int-in-bool-context] This is easy to avoid by comparing the timeout to zero instead, making it a boolean expression. Signed-off-by: Arnd Bergmann --- include/linux/iopoll.h | 6 ++++-- include/linux/regmap.h | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/include/linux/iopoll.h b/include/linux/iopoll.h index d29e1e21bf3f..7a17ba02253b 100644 --- a/include/linux/iopoll.h +++ b/include/linux/iopoll.h @@ -48,7 +48,8 @@ (val) = op(addr); \ if (cond) \ break; \ - if (timeout_us && ktime_compare(ktime_get(), timeout) > 0) { \ + if ((timeout_us) > 0 && \ + ktime_compare(ktime_get(), timeout) > 0) { \ (val) = op(addr); \ break; \ } \ @@ -82,7 +83,8 @@ (val) = op(addr); \ if (cond) \ break; \ - if (timeout_us && ktime_compare(ktime_get(), timeout) > 0) { \ + if ((timeout_us) > 0 && \ + ktime_compare(ktime_get(), timeout) > 0) { \ (val) = op(addr); \ break; \ } \ diff --git a/include/linux/regmap.h b/include/linux/regmap.h index 1474ab0a3922..0889dbf37161 100644 --- a/include/linux/regmap.h +++ b/include/linux/regmap.h @@ -129,7 +129,7 @@ struct reg_sequence { break; \ if (cond) \ break; \ - if ((timeout_us) && \ + if ((timeout_us) > 0 && \ ktime_compare(ktime_get(), __timeout) > 0) { \ __ret = regmap_read((map), (addr), &(val)); \ break; \ From patchwork Fri Jul 14 09:36:56 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [14/14,media] fix warning on v4l2_subdev_call() result interpreted as bool From: Arnd Bergmann X-Patchwork-Id: 166980 Message-Id: <20170714093938.1469319-1-arnd@arndb.de> To: linux-kernel@vger.kernel.org, Mauro Carvalho Chehab , Hans Verkuil Cc: devel@driverdev.osuosl.org, =?UTF-8?q?Niklas=20S=C3=B6derlund?= , Arnd Bergmann , Greg Kroah-Hartman , Robert Jarzmik , adi-buildroot-devel@lists.sourceforge.net, dri-devel@lists.freedesktop.org, linux-renesas-soc@vger.kernel.org, linux-ide@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Tejun Heo , akpm@linux-foundation.org, Alan Cox , Linus Torvalds , Daeseok Youn , Guenter Roeck , linux-media@vger.kernel.org Date: Fri, 14 Jul 2017 11:36:56 +0200 v4l2_subdev_call is a macro returning whatever the callback return type is, usually 'int'. With gcc-7 and ccache, this can lead to many wanings like: media/platform/pxa_camera.c: In function 'pxa_mbus_build_fmts_xlate': media/platform/pxa_camera.c:766:27: error: ?: using integer constants in boolean context [-Werror=int-in-bool-context] while (!v4l2_subdev_call(subdev, pad, enum_mbus_code, NULL, &code)) { media/atomisp/pci/atomisp2/atomisp_cmd.c: In function 'atomisp_s_ae_window': media/atomisp/pci/atomisp2/atomisp_cmd.c:6414:52: error: ?: using integer constants in boolean context [-Werror=int-in-bool-context] if (v4l2_subdev_call(isp->inputs[asd->input_curr].camera, The best workaround I could come up with is to change all the callers that use the return code from v4l2_subdev_call() in an 'if' or 'while' condition. In case of simple 'if' checks, adding a temporary variable is usually ok, and sometimes this can be used to propagate or print an error code, so I do that. For the 'while' loops, I ended up adding an otherwise useless comparison with zero, which unfortunately makes the code a little uglied. Signed-off-by: Arnd Bergmann --- drivers/media/pci/cx18/cx18-ioctl.c | 6 ++++-- drivers/media/pci/saa7146/mxb.c | 5 +++-- drivers/media/platform/atmel/atmel-isc.c | 4 ++-- drivers/media/platform/atmel/atmel-isi.c | 4 ++-- drivers/media/platform/blackfin/bfin_capture.c | 4 ++-- drivers/media/platform/omap3isp/ispccdc.c | 5 +++-- drivers/media/platform/pxa_camera.c | 3 ++- drivers/media/platform/rcar-vin/rcar-core.c | 2 +- drivers/media/platform/rcar-vin/rcar-dma.c | 4 +++- drivers/media/platform/soc_camera/soc_camera.c | 4 ++-- drivers/media/platform/stm32/stm32-dcmi.c | 4 ++-- drivers/media/platform/ti-vpe/cal.c | 6 ++++-- drivers/staging/media/atomisp/pci/atomisp2/atomisp_cmd.c | 13 +++++++------ 13 files changed, 37 insertions(+), 27 deletions(-) diff --git a/drivers/media/pci/cx18/cx18-ioctl.c b/drivers/media/pci/cx18/cx18-ioctl.c index 80b902b12a78..1803f28fc501 100644 --- a/drivers/media/pci/cx18/cx18-ioctl.c +++ b/drivers/media/pci/cx18/cx18-ioctl.c @@ -188,6 +188,7 @@ static int cx18_g_fmt_sliced_vbi_cap(struct file *file, void *fh, { struct cx18 *cx = fh2id(fh)->cx; struct v4l2_sliced_vbi_format *vbifmt = &fmt->fmt.sliced; + int ret; /* sane, V4L2 spec compliant, defaults */ vbifmt->reserved[0] = 0; @@ -201,8 +202,9 @@ static int cx18_g_fmt_sliced_vbi_cap(struct file *file, void *fh, * digitizer/slicer. Note, cx18_av_vbi() wipes the passed in * fmt->fmt.sliced under valid calling conditions */ - if (v4l2_subdev_call(cx->sd_av, vbi, g_sliced_fmt, &fmt->fmt.sliced)) - return -EINVAL; + ret = v4l2_subdev_call(cx->sd_av, vbi, g_sliced_fmt, &fmt->fmt.sliced); + if (ret) + return ret; vbifmt->service_set = cx18_get_service_set(vbifmt); return 0; diff --git a/drivers/media/pci/saa7146/mxb.c b/drivers/media/pci/saa7146/mxb.c index 504d78807639..d2d843c38579 100644 --- a/drivers/media/pci/saa7146/mxb.c +++ b/drivers/media/pci/saa7146/mxb.c @@ -525,8 +525,9 @@ static int vidioc_s_input(struct file *file, void *fh, unsigned int input) return err; /* switch video in saa7111a */ - if (saa7111a_call(mxb, video, s_routing, i, SAA7111_FMT_CCIR, 0)) - pr_err("VIDIOC_S_INPUT: could not address saa7111a\n"); + err = saa7111a_call(mxb, video, s_routing, i, SAA7111_FMT_CCIR, 0); + if (err) + pr_err("VIDIOC_S_INPUT: could not address saa7111a: %d\n", err); mxb->cur_audinput = video_audio_connect[input]; /* switch the audio-source only if necessary */ diff --git a/drivers/media/platform/atmel/atmel-isc.c b/drivers/media/platform/atmel/atmel-isc.c index d6534252cdcd..704b34a0cc00 100644 --- a/drivers/media/platform/atmel/atmel-isc.c +++ b/drivers/media/platform/atmel/atmel-isc.c @@ -1475,8 +1475,8 @@ static int isc_formats_init(struct isc_device *isc) fmt++; } - while (!v4l2_subdev_call(subdev, pad, enum_mbus_code, - NULL, &mbus_code)) { + while (v4l2_subdev_call(subdev, pad, enum_mbus_code, + NULL, &mbus_code) == 0) { mbus_code.index++; fmt = find_format_by_code(mbus_code.code, &i); if (!fmt) diff --git a/drivers/media/platform/atmel/atmel-isi.c b/drivers/media/platform/atmel/atmel-isi.c index 891fa2505efa..30b7e6f298ed 100644 --- a/drivers/media/platform/atmel/atmel-isi.c +++ b/drivers/media/platform/atmel/atmel-isi.c @@ -1013,8 +1013,8 @@ static int isi_formats_init(struct atmel_isi *isi) .which = V4L2_SUBDEV_FORMAT_ACTIVE, }; - while (!v4l2_subdev_call(subdev, pad, enum_mbus_code, - NULL, &mbus_code)) { + while (v4l2_subdev_call(subdev, pad, enum_mbus_code, + NULL, &mbus_code) == 0) { for (i = 0; i < ARRAY_SIZE(isi_formats); i++) { if (isi_formats[i].mbus_code != mbus_code.code) continue; diff --git a/drivers/media/platform/blackfin/bfin_capture.c b/drivers/media/platform/blackfin/bfin_capture.c index 1c5166df46f5..864c98f21a0e 100644 --- a/drivers/media/platform/blackfin/bfin_capture.c +++ b/drivers/media/platform/blackfin/bfin_capture.c @@ -157,8 +157,8 @@ static int bcap_init_sensor_formats(struct bcap_device *bcap_dev) unsigned int num_formats = 0; int i, j; - while (!v4l2_subdev_call(bcap_dev->sd, pad, - enum_mbus_code, NULL, &code)) { + while (v4l2_subdev_call(bcap_dev->sd, pad, + enum_mbus_code, NULL, &code) == 0) { num_formats++; code.index++; } diff --git a/drivers/media/platform/omap3isp/ispccdc.c b/drivers/media/platform/omap3isp/ispccdc.c index 7207558d722c..a94157461f58 100644 --- a/drivers/media/platform/omap3isp/ispccdc.c +++ b/drivers/media/platform/omap3isp/ispccdc.c @@ -1132,6 +1132,7 @@ static void ccdc_configure(struct isp_ccdc_device *ccdc) unsigned int sph; u32 syn_mode; u32 ccdc_pattern; + int ret; ccdc->bt656 = false; ccdc->fields = 0; @@ -1140,7 +1141,6 @@ static void ccdc_configure(struct isp_ccdc_device *ccdc) sensor = media_entity_to_v4l2_subdev(pad->entity); if (ccdc->input == CCDC_INPUT_PARALLEL) { struct v4l2_mbus_config cfg; - int ret; ret = v4l2_subdev_call(sensor, video, g_mbus_config, &cfg); if (!ret) @@ -1158,7 +1158,8 @@ static void ccdc_configure(struct isp_ccdc_device *ccdc) */ fmt_src.pad = pad->index; fmt_src.which = V4L2_SUBDEV_FORMAT_ACTIVE; - if (!v4l2_subdev_call(sensor, pad, get_fmt, NULL, &fmt_src)) { + ret = v4l2_subdev_call(sensor, pad, get_fmt, NULL, &fmt_src); + if (!ret) { fmt_info = omap3isp_video_format_info(fmt_src.format.code); depth_in = fmt_info->width; } diff --git a/drivers/media/platform/pxa_camera.c b/drivers/media/platform/pxa_camera.c index 399095170b6e..5236c7b171ea 100644 --- a/drivers/media/platform/pxa_camera.c +++ b/drivers/media/platform/pxa_camera.c @@ -763,7 +763,8 @@ static struct soc_camera_format_xlate *pxa_mbus_build_fmts_xlate( }; struct soc_camera_format_xlate *user_formats; - while (!v4l2_subdev_call(subdev, pad, enum_mbus_code, NULL, &code)) { + while (v4l2_subdev_call(subdev, pad, enum_mbus_code, NULL, &code) == + 0) { raw_fmts++; code.index++; } diff --git a/drivers/media/platform/rcar-vin/rcar-core.c b/drivers/media/platform/rcar-vin/rcar-core.c index 77dff047c41c..a41f4a3d9b69 100644 --- a/drivers/media/platform/rcar-vin/rcar-core.c +++ b/drivers/media/platform/rcar-vin/rcar-core.c @@ -54,7 +54,7 @@ static bool rvin_mbus_supported(struct rvin_graph_entity *entity) code.index = 0; code.pad = entity->source_pad; - while (!v4l2_subdev_call(sd, pad, enum_mbus_code, NULL, &code)) { + while (v4l2_subdev_call(sd, pad, enum_mbus_code, NULL, &code) == 0) { code.index++; switch (code.code) { case MEDIA_BUS_FMT_YUYV8_1X16: diff --git a/drivers/media/platform/rcar-vin/rcar-dma.c b/drivers/media/platform/rcar-vin/rcar-dma.c index b136844499f6..ee16e9886041 100644 --- a/drivers/media/platform/rcar-vin/rcar-dma.c +++ b/drivers/media/platform/rcar-vin/rcar-dma.c @@ -143,6 +143,7 @@ static int rvin_setup(struct rvin_dev *vin) u32 vnmc, dmr, dmr2, interrupts; v4l2_std_id std; bool progressive = false, output_is_yuv = false, input_is_yuv = false; + int ret; switch (vin->format.field) { case V4L2_FIELD_TOP: @@ -155,7 +156,8 @@ static int rvin_setup(struct rvin_dev *vin) /* Default to TB */ vnmc = VNMC_IM_FULL; /* Use BT if video standard can be read and is 60 Hz format */ - if (!v4l2_subdev_call(vin_to_source(vin), video, g_std, &std)) { + ret = v4l2_subdev_call(vin_to_source(vin), video, g_std, &std); + if (ret) { if (std & V4L2_STD_525_60) vnmc = VNMC_IM_FULL | VNMC_FOC; } diff --git a/drivers/media/platform/soc_camera/soc_camera.c b/drivers/media/platform/soc_camera/soc_camera.c index 45a0429d75bb..3ef648fc2db6 100644 --- a/drivers/media/platform/soc_camera/soc_camera.c +++ b/drivers/media/platform/soc_camera/soc_camera.c @@ -454,7 +454,7 @@ static int soc_camera_init_user_formats(struct soc_camera_device *icd) .which = V4L2_SUBDEV_FORMAT_ACTIVE, }; - while (!v4l2_subdev_call(sd, pad, enum_mbus_code, NULL, &code)) { + while (v4l2_subdev_call(sd, pad, enum_mbus_code, NULL, &code) == 0) { raw_fmts++; code.index++; } @@ -1202,7 +1202,7 @@ static int soc_camera_probe_finish(struct soc_camera_device *icd) goto evidstart; /* Try to improve our guess of a reasonable window format */ - if (!v4l2_subdev_call(sd, pad, get_fmt, NULL, &fmt)) { + if (v4l2_subdev_call(sd, pad, get_fmt, NULL, &fmt) == 0) { icd->user_width = mf->width; icd->user_height = mf->height; icd->colorspace = mf->colorspace; diff --git a/drivers/media/platform/stm32/stm32-dcmi.c b/drivers/media/platform/stm32/stm32-dcmi.c index 83d32a5d0f40..96084dfd5d11 100644 --- a/drivers/media/platform/stm32/stm32-dcmi.c +++ b/drivers/media/platform/stm32/stm32-dcmi.c @@ -1034,8 +1034,8 @@ static int dcmi_formats_init(struct stm32_dcmi *dcmi) .which = V4L2_SUBDEV_FORMAT_ACTIVE, }; - while (!v4l2_subdev_call(subdev, pad, enum_mbus_code, - NULL, &mbus_code)) { + while (v4l2_subdev_call(subdev, pad, enum_mbus_code, + NULL, &mbus_code) == 0) { for (i = 0; i < ARRAY_SIZE(dcmi_formats); i++) { if (dcmi_formats[i].mbus_code != mbus_code.code) continue; diff --git a/drivers/media/platform/ti-vpe/cal.c b/drivers/media/platform/ti-vpe/cal.c index 177faa36bc16..df0216a6367c 100644 --- a/drivers/media/platform/ti-vpe/cal.c +++ b/drivers/media/platform/ti-vpe/cal.c @@ -1348,9 +1348,11 @@ static void cal_stop_streaming(struct vb2_queue *vq) struct cal_dmaqueue *dma_q = &ctx->vidq; struct cal_buffer *buf, *tmp; unsigned long flags; + int ret; - if (v4l2_subdev_call(ctx->sensor, video, s_stream, 0)) - ctx_err(ctx, "stream off failed in subdev\n"); + ret = v4l2_subdev_call(ctx->sensor, video, s_stream, 0); + if (ret) + ctx_err(ctx, "stream off failed in subdev: %d\n", ret); csi2_ppi_disable(ctx); disable_irqs(ctx); diff --git a/drivers/staging/media/atomisp/pci/atomisp2/atomisp_cmd.c b/drivers/staging/media/atomisp/pci/atomisp2/atomisp_cmd.c index 97093baf28ac..fe56a037f065 100644 --- a/drivers/staging/media/atomisp/pci/atomisp2/atomisp_cmd.c +++ b/drivers/staging/media/atomisp/pci/atomisp2/atomisp_cmd.c @@ -6405,19 +6405,20 @@ int atomisp_s_ae_window(struct atomisp_sub_device *asd, struct atomisp_device *isp = asd->isp; /* Coverity CID 298071 - initialzize struct */ struct v4l2_subdev_selection sel = { 0 }; + int ret; sel.r.left = arg->x_left; sel.r.top = arg->y_top; sel.r.width = arg->x_right - arg->x_left + 1; sel.r.height = arg->y_bottom - arg->y_top + 1; - if (v4l2_subdev_call(isp->inputs[asd->input_curr].camera, - pad, set_selection, NULL, &sel)) { - dev_err(isp->dev, "failed to call sensor set_selection.\n"); - return -EINVAL; - } + ret = v4l2_subdev_call(isp->inputs[asd->input_curr].camera, + pad, set_selection, NULL, &sel); + if (ret) + dev_err(isp->dev, "failed to call sensor set_selection: %d\n", + ret); - return 0; + return ret; } int atomisp_flash_enable(struct atomisp_sub_device *asd, int num_frames)