1. 25 Feb, 2018 40 commits
    • Peter Zijlstra's avatar
      KVM: x86: Make indirect calls in emulator speculation safe · 5dac4658
      Peter Zijlstra authored
      (cherry picked from commit 1a29b5b7)
      
      Replace the indirect calls with CALL_NOSPEC.
      Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
      Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      Reviewed-by: default avatarDavid Woodhouse <dwmw@amazon.co.uk>
      Cc: Andrea Arcangeli <aarcange@redhat.com>
      Cc: Andi Kleen <ak@linux.intel.com>
      Cc: Ashok Raj <ashok.raj@intel.com>
      Cc: Greg KH <gregkh@linuxfoundation.org>
      Cc: Jun Nakajima <jun.nakajima@intel.com>
      Cc: David Woodhouse <dwmw2@infradead.org>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: rga@amazon.de
      Cc: Dave Hansen <dave.hansen@intel.com>
      Cc: Asit Mallick <asit.k.mallick@intel.com>
      Cc: Andy Lutomirski <luto@kernel.org>
      Cc: Josh Poimboeuf <jpoimboe@redhat.com>
      Cc: Jason Baron <jbaron@akamai.com>
      Cc: Paolo Bonzini <pbonzini@redhat.com>
      Cc: Dan Williams <dan.j.williams@intel.com>
      Cc: Arjan Van De Ven <arjan.van.de.ven@intel.com>
      Cc: Tim Chen <tim.c.chen@linux.intel.com>
      Link: https://lkml.kernel.org/r/20180125095843.595615683@infradead.org
      [dwmw2: Use ASM_CALL_CONSTRAINT like upstream, now we have it]
      Signed-off-by: default avatarDavid Woodhouse <dwmw@amazon.co.uk>
      [backport to 4.4]
      Signed-off-by: default avatarJack Wang <jinpu.wang@profitbricks.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      5dac4658
    • Waiman Long's avatar
      x86/retpoline: Remove the esp/rsp thunk · ffe69f2d
      Waiman Long authored
      commit 1df37383 upstream.
      
      It doesn't make sense to have an indirect call thunk with esp/rsp as
      retpoline code won't work correctly with the stack pointer register.
      Removing it will help compiler writers to catch error in case such
      a thunk call is emitted incorrectly.
      
      Fixes: 76b04384 ("x86/retpoline: Add initial retpoline support")
      Suggested-by: default avatarJeff Law <law@redhat.com>
      Signed-off-by: default avatarWaiman Long <longman@redhat.com>
      Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      Acked-by: default avatarDavid Woodhouse <dwmw@amazon.co.uk>
      Cc: Tom Lendacky <thomas.lendacky@amd.com>
      Cc: Kees Cook <keescook@google.com>
      Cc: Andi Kleen <ak@linux.intel.com>
      Cc: Tim Chen <tim.c.chen@linux.intel.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Jiri Kosina <jikos@kernel.org>
      Cc: Andy Lutomirski <luto@amacapital.net>
      Cc: Dave Hansen <dave.hansen@intel.com>
      Cc: Josh Poimboeuf <jpoimboe@redhat.com>
      Cc: Arjan van de Ven <arjan@linux.intel.com>
      Cc: Greg Kroah-Hartman <gregkh@linux-foundation.org>
      Cc: Paul Turner <pjt@google.com>
      Link: https://lkml.kernel.org/r/1516658974-27852-1-git-send-email-longman@redhat.comSigned-off-by: default avatarDavid Woodhouse <dwmw@amazon.co.uk>
      [jwang: cherry pick to 4.4]
      Signed-off-by: default avatarJack Wang <jinpu.wang@profitbricks.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      ffe69f2d
    • Wanpeng Li's avatar
      KVM: async_pf: Fix #DF due to inject "Page not Present" and "Page Ready" exceptions simultaneously · 5f753713
      Wanpeng Li authored
      commit 9a6e7c39 upstream.
      
      qemu-system-x86-8600  [004] d..1  7205.687530: kvm_entry: vcpu 2
      qemu-system-x86-8600  [004] ....  7205.687532: kvm_exit: reason EXCEPTION_NMI rip 0xffffffffa921297d info ffffeb2c0e44e018 80000b0e
      qemu-system-x86-8600  [004] ....  7205.687532: kvm_page_fault: address ffffeb2c0e44e018 error_code 0
      qemu-system-x86-8600  [004] ....  7205.687620: kvm_try_async_get_page: gva = 0xffffeb2c0e44e018, gfn = 0x427e4e
      qemu-system-x86-8600  [004] .N..  7205.687628: kvm_async_pf_not_present: token 0x8b002 gva 0xffffeb2c0e44e018
          kworker/4:2-7814  [004] ....  7205.687655: kvm_async_pf_completed: gva 0xffffeb2c0e44e018 address 0x7fcc30c4e000
      qemu-system-x86-8600  [004] ....  7205.687703: kvm_async_pf_ready: token 0x8b002 gva 0xffffeb2c0e44e018
      qemu-system-x86-8600  [004] d..1  7205.687711: kvm_entry: vcpu 2
      
      After running some memory intensive workload in guest, I catch the kworker
      which completes the GUP too quickly, and queues an "Page Ready" #PF exception
      after the "Page not Present" exception before the next vmentry as the above
      trace which will result in #DF injected to guest.
      
      This patch fixes it by clearing the queue for "Page not Present" if "Page Ready"
      occurs before the next vmentry since the GUP has already got the required page
      and shadow page table has already been fixed by "Page Ready" handler.
      
      Cc: Paolo Bonzini <pbonzini@redhat.com>
      Cc: Radim Krčmář <rkrcmar@redhat.com>
      Signed-off-by: default avatarWanpeng Li <wanpeng.li@hotmail.com>
      Fixes: 7c90705b ("KVM: Inject asynchronous page fault into a PV guest if page is swapped out.")
      [Changed indentation and added clearing of injected. - Radim]
      Signed-off-by: default avatarRadim Krčmář <rkrcmar@redhat.com>
      [port from upstream v4.14-rc1, Don't assign to kvm_queued_exception::injected or
       x86_exception::async_page_fault]
      Signed-off-by: default avatarJack Wang <jinpu.wang@profitbricks.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      5f753713
    • Arnd Bergmann's avatar
      kasan: rework Kconfig settings · 0ffa39fb
      Arnd Bergmann authored
      commit e7c52b84 upstream.
      
      We get a lot of very large stack frames using gcc-7.0.1 with the default
      -fsanitize-address-use-after-scope --param asan-stack=1 options, which can
      easily cause an overflow of the kernel stack, e.g.
      
        drivers/gpu/drm/i915/gvt/handlers.c:2434:1: warning: the frame size of 46176 bytes is larger than 3072 bytes
        drivers/net/wireless/ralink/rt2x00/rt2800lib.c:5650:1: warning: the frame size of 23632 bytes is larger than 3072 bytes
        lib/atomic64_test.c:250:1: warning: the frame size of 11200 bytes is larger than 3072 bytes
        drivers/gpu/drm/i915/gvt/handlers.c:2621:1: warning: the frame size of 9208 bytes is larger than 3072 bytes
        drivers/media/dvb-frontends/stv090x.c:3431:1: warning: the frame size of 6816 bytes is larger than 3072 bytes
        fs/fscache/stats.c:287:1: warning: the frame size of 6536 bytes is larger than 3072 bytes
      
      To reduce this risk, -fsanitize-address-use-after-scope is now split out
      into a separate CONFIG_KASAN_EXTRA Kconfig option, leading to stack
      frames that are smaller than 2 kilobytes most of the time on x86_64.  An
      earlier version of this patch also prevented combining KASAN_EXTRA with
      KASAN_INLINE, but that is no longer necessary with gcc-7.0.1.
      
      All patches to get the frame size below 2048 bytes with CONFIG_KASAN=y
      and CONFIG_KASAN_EXTRA=n have been merged by maintainers now, so we can
      bring back that default now.  KASAN_EXTRA=y still causes lots of
      warnings but now defaults to !COMPILE_TEST to disable it in
      allmodconfig, and it remains disabled in all other defconfigs since it
      is a new option.  I arbitrarily raise the warning limit for KASAN_EXTRA
      to 3072 to reduce the noise, but an allmodconfig kernel still has around
      50 warnings on gcc-7.
      
      I experimented a bit more with smaller stack frames and have another
      follow-up series that reduces the warning limit for 64-bit architectures
      to 1280 bytes (without CONFIG_KASAN).
      
      With earlier versions of this patch series, I also had patches to address
      the warnings we get with KASAN and/or KASAN_EXTRA, using a
      "noinline_if_stackbloat" annotation.
      
      That annotation now got replaced with a gcc-8 bugfix (see
      https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81715) and a workaround for
      older compilers, which means that KASAN_EXTRA is now just as bad as
      before and will lead to an instant stack overflow in a few extreme
      cases.
      
      This reverts parts of commit 3f181b4d ("lib/Kconfig.debug: disable
      -Wframe-larger-than warnings with KASAN=y").  Two patches in linux-next
      should be merged first to avoid introducing warnings in an allmodconfig
      build:
        3cd890db ("media: dvb-frontends: fix i2c access helpers for KASAN")
        16c3ada8 ("media: r820t: fix r820t_write_reg for KASAN")
      
      Do we really need to backport this?
      
      I think we do: without this patch, enabling KASAN will lead to
      unavoidable kernel stack overflow in certain device drivers when built
      with gcc-7 or higher on linux-4.10+ or any version that contains a
      backport of commit c5caf21a.  Most people are probably still on
      older compilers, but it will get worse over time as they upgrade their
      distros.
      
      The warnings we get on kernels older than this should all be for code
      that uses dangerously large stack frames, though most of them do not
      cause an actual stack overflow by themselves.The asan-stack option was
      added in linux-4.0, and commit 3f181b4d ("lib/Kconfig.debug:
      disable -Wframe-larger-than warnings with KASAN=y") effectively turned
      off the warning for allmodconfig kernels, so I would like to see this
      fix backported to any kernels later than 4.0.
      
      I have done dozens of fixes for individual functions with stack frames
      larger than 2048 bytes with asan-stack, and I plan to make sure that
      all those fixes make it into the stable kernels as well (most are
      already there).
      
      Part of the complication here is that asan-stack (from 4.0) was
      originally assumed to always require much larger stacks, but that
      turned out to be a combination of multiple gcc bugs that we have now
      worked around and fixed, but sanitize-address-use-after-scope (from
      v4.10) has a much higher inherent stack usage and also suffers from at
      least three other problems that we have analyzed but not yet fixed
      upstream, each of them makes the stack usage more severe than it should
      be.
      
      Link: http://lkml.kernel.org/r/20171221134744.2295529-1-arnd@arndb.deSigned-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Acked-by: default avatarAndrey Ryabinin <aryabinin@virtuozzo.com>
      Cc: Mauro Carvalho Chehab <mchehab@kernel.org>
      Cc: Andrey Ryabinin <aryabinin@virtuozzo.com>
      Cc: Alexander Potapenko <glider@google.com>
      Cc: Dmitry Vyukov <dvyukov@google.com>
      Cc: Andrey Konovalov <andreyknvl@google.com>
      Cc: <stable@vger.kernel.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      [arnd: rebase to v4.4; only re-enable warning]
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      0ffa39fb
    • Sudip Mukherjee's avatar
      drm/gma500: remove helper function · f45cd9bd
      Sudip Mukherjee authored
      commit db9b6040 upstream.
      
      We were getting build warning about:
      drivers/gpu/drm/gma500/mdfld_dsi_output.c:407:2: warning: initialization
      	from incompatible pointer type
      
      The callback to dpms was pointing to a helper function which had a
      return type of void, whereas the callback should point to a function
      which has a return type of int.
      On closer look it turned out that we do not need the helper function
      since if we call drm_helper_connector_dpms() directly, the first check
      that drm_helper_connector_dpms() does is: if (mode == connector->dpms)
      Signed-off-by: default avatarSudip Mukherjee <sudip@vectorindia.org>
      Link: http://patchwork.freedesktop.org/patch/msgid/1454393155-13142-1-git-send-email-sudipm.mukherjee@gmail.comAcked-by: default avatarPatrik Jakobsson <patrik.r.jakobsson@gmail.com>
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@intel.com>
      [arnd: rebased to 4.4]
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      f45cd9bd
    • Borislav Petkov's avatar
      x86/microcode/AMD: Change load_microcode_amd()'s param to bool to fix preemptibility bug · 26c3a6a7
      Borislav Petkov authored
      commit dac6ca24 upstream.
      
      With CONFIG_DEBUG_PREEMPT enabled, I get:
      
        BUG: using smp_processor_id() in preemptible [00000000] code: swapper/0/1
        caller is debug_smp_processor_id
        CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.12.0-rc2+ #2
        Call Trace:
         dump_stack
         check_preemption_disabled
         debug_smp_processor_id
         save_microcode_in_initrd_amd
         ? microcode_init
         save_microcode_in_initrd
         ...
      
      because, well, it says it above, we're using smp_processor_id() in
      preemptible code.
      
      But passing the CPU number is not really needed. It is only used to
      determine whether we're on the BSP, and, if so, to save the microcode
      patch for early loading.
      
       [ We don't absolutely need to do it on the BSP but we do that
         customarily there. ]
      
      Instead, convert that function parameter to a boolean which denotes
      whether the patch should be saved or not, thereby avoiding the use of
      smp_processor_id() in preemptible code.
      Signed-off-by: default avatarBorislav Petkov <bp@suse.de>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Link: http://lkml.kernel.org/r/20170528200414.31305-1-bp@alien8.deSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
      [arnd: rebased to 4.9, after running into warning:
       arch/x86/kernel/cpu/microcode/amd.c:881:30: self-comparison always evaluates to true]
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      26c3a6a7
    • Michal Marek's avatar
      genksyms: Fix segfault with invalid declarations · d93cf734
      Michal Marek authored
      commit d920f7c6 upstream.
      
      Do not try to recover too early and segfault when parsing invalid
      declarations such as
      
      echo 'int (int);' | scripts/genksyms/genksyms
      echo 'int a, (int);' | scripts/genksyms/genksyms
      echo 'extern void *__inline_memcpy((void *), (const void *), (__kernel_size_t));' | scripts/genksyms/genksyms
      
      The last one was a real-life bug with
      include/asm-generic/asm-prototypes.h on x86_64.
      Reported-and-tested-by: default avatarBorislav Petkov <bp@alien8.de>
      Signed-off-by: default avatarMichal Marek <mmarek@suse.com>
      [arnd: rebase to 4.4, regenerate parse.tab.{c,h}]
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      d93cf734
    • Andy Lutomirski's avatar
      dell-wmi, dell-laptop: depends DMI · 5381db24
      Andy Lutomirski authored
      commit a570af48 upstream.
      
      dell-wmi and dell-laptop will compile but won't work right if DMI
      isn't selected.
      Signed-off-by: default avatarAndy Lutomirski <luto@kernel.org>
      Acked-by: default avatarPali Rohár <pali.rohar@gmail.com>
      [arnd: Use depends instead of selects to avoid recursive dependencies]
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Signed-off-by: default avatarDarren Hart <dvhart@linux.intel.com>
      [arnd: rebase to 4.4-stable]
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      5381db24
    • Arnd Bergmann's avatar
      netlink: fix nla_put_{u8,u16,u32} for KASAN · 15a242fd
      Arnd Bergmann authored
      commit b4391db4 upstream.
      
      When CONFIG_KASAN is enabled, the "--param asan-stack=1" causes rather large
      stack frames in some functions. This goes unnoticed normally because
      CONFIG_FRAME_WARN is disabled with CONFIG_KASAN by default as of commit
      3f181b4d ("lib/Kconfig.debug: disable -Wframe-larger-than warnings with
      KASAN=y").
      
      The kernelci.org build bot however has the warning enabled and that led
      me to investigate it a little further, as every build produces these warnings:
      
      net/wireless/nl80211.c:4389:1: warning: the frame size of 2240 bytes is larger than 2048 bytes [-Wframe-larger-than=]
      net/wireless/nl80211.c:1895:1: warning: the frame size of 3776 bytes is larger than 2048 bytes [-Wframe-larger-than=]
      net/wireless/nl80211.c:1410:1: warning: the frame size of 2208 bytes is larger than 2048 bytes [-Wframe-larger-than=]
      net/bridge/br_netlink.c:1282:1: warning: the frame size of 2544 bytes is larger than 2048 bytes [-Wframe-larger-than=]
      
      Most of this problem is now solved in gcc-8, which can consolidate
      the stack slots for the inline function arguments. On older compilers
      we can add a workaround by declaring a local variable in each function
      to pass the inline function argument.
      
      Cc: stable@vger.kernel.org
      Link: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81715Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      [arnd: rebased to 4.4-stable]
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      15a242fd
    • Vinod Koul's avatar
      ASoC: Intel: Kconfig: fix build when ACPI is not enabled · bd84055a
      Vinod Koul authored
      commit 3493d4a8 upstream.
      
      Randy reported following error when ACPI is not enabled:
      
      warning: (SND_SOC_INTEL_BYTCR_RT5640_MACH && SND_SOC_INTEL_BYTCR_RT5651_MACH
      && SND_SOC_INTEL_CHT_BSW_RT5672_MACH && SND_SOC_INTEL_CHT_BSW_RT5645_MACH &&
      SND_SOC_INTEL_CHT_BSW_MAX98090_TI_MACH) selects SND_SST_IPC_ACPI
      +which has unmet direct dependencies (SOUND && !M68K && !UML && SND &&
      SND_SOC && ACPI)
      
      causing these build errors:
      
      In file included from ../sound/soc/intel/atom/sst/sst_acpi.c:40:0:
      ../include/acpi/acpi_bus.h:65:20: error: conflicting types for
      'acpi_evaluate_dsm'
       union acpi_object *acpi_evaluate_dsm(acpi_handle handle, const u8 *uuid,
      In file included from ../sound/soc/intel/atom/sst/sst_acpi.c:31:0:
      ../include/linux/acpi.h:676:34: note: previous definition of
      'acpi_evaluate_dsm' was here
       static inline union acpi_object *acpi_evaluate_dsm(acpi_handle handle,
      
      CONFIG_SND_SST_IPC_ACPI was already dependent upon ACPI, but that was not
      solving it. So move the depends up to machine drivers and remove from
      CONFIG_SND_SST_IPC_ACPI.
      Reported-by: default avatarRandy Dunlap <rdunlap@infradead.org>
      Signed-off-by: default avatarVinod Koul <vinod.koul@intel.com>
      Signed-off-by: default avatarMark Brown <broonie@kernel.org>
      [arnd: rebased to PATCH kernel]
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      bd84055a
    • Arnd Bergmann's avatar
      ARM: tegra: select USB_ULPI from EHCI rather than platform · 0522f5e8
      Arnd Bergmann authored
      commit a262e87f upstream.
      
      For historic reasons, the tegra platform selects USB_ULPI from architecture
      code, but that hasn't really made sense for a long time, as the only
      user of that code is the Tegra EHCI driver that has its own Kconfig
      symbol.
      
      This removes the 'select' statements from mach-tegra and drivers/soc/tegra
      and adds them with the device driver that actually needs them.
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Signed-off-by: default avatarThierry Reding <treding@nvidia.com>
      [arnd: rebased to 4.4-stable]
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      0522f5e8
    • Arnd Bergmann's avatar
      ncr5380: shut up gcc indentation warning · 4d48916f
      Arnd Bergmann authored
      gcc-6 and higher warn about the way some loops are written in
      the ncr5380 driver:
      
      drivers/scsi/g_NCR5380.c: In function 'generic_NCR5380_pread':
      drivers/scsi/g_NCR5380.c:541:3: error: this 'while' clause does not guard... [-Werror=misleading-indentation]
         while (NCR5380_read(C400_CONTROL_STATUS_REG) & CSR_HOST_BUF_NOT_RDY);
         ^~~~~
      drivers/scsi/g_NCR5380.c:544:3: note: ...this statement, but the latter is misleadingly indented as if it is guarded by the 'while'
      
      This was addressed in mainline kernels as part of a rework on commit
      12150797 ("ncr5380: Use runtime register mapping"). We don't
      want the entire patch backported to stable kernels, but we can
      backport one hunk to get rid of the warning.
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Acked-by: default avatarFinn Thain <fthain@telegraphics.com.au>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      4d48916f
    • Arnd Bergmann's avatar
      usb: phy: msm add regulator dependency · 18e5cdf6
      Arnd Bergmann authored
      On linux-4.4 and linux-4.9 we get a warning about an array that is
      never initialized when CONFIG_REGULATOR is disabled:
      
      drivers/usb/phy/phy-msm-usb.c: In function 'msm_otg_probe':
      drivers/usb/phy/phy-msm-usb.c:1911:14: error: 'regs[0].consumer' may be used uninitialized in this function [-Werror=maybe-uninitialized]
        motg->vddcx = regs[0].consumer;
        ~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~
      drivers/usb/phy/phy-msm-usb.c:1912:14: error: 'regs[1].consumer' may be used uninitialized in this function [-Werror=maybe-uninitialized]
        motg->v3p3  = regs[1].consumer;
        ~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~
      drivers/usb/phy/phy-msm-usb.c:1913:14: error: 'regs[2].consumer' may be used uninitialized in this function [-Werror=maybe-uninitialized]
        motg->v1p8  = regs[2].consumer;
      
      This adds a Kconfig dependency for it. In newer kernels, the driver no
      longer exists, so this is only needed for stable kernels.
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      18e5cdf6
    • Arnd Bergmann's avatar
      idle: i7300: add PCI dependency · 3596e409
      Arnd Bergmann authored
      GCC correctly points out an uninitialized variable use when CONFIG_PCI is disabled.
      
      drivers/idle/i7300_idle.c: In function 'i7300_idle_notifier':
      include/asm-generic/bug.h:119:5: error: 'got_ctl' may be used uninitialized in this function [-Werror=maybe-uninitialized]
        if (unlikely(__ret_warn_once && !__warned)) {  \
           ^
      drivers/idle/i7300_idle.c:415:5: note: 'got_ctl' was declared here
        u8 got_ctl;
           ^~~~~~~
      
      The driver no longer exists in later kernels, so this patch only appplies to
      linux-4.9.y and earlier.
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      3596e409
    • Arnd Bergmann's avatar
      binfmt_elf: compat: avoid unused function warning · b8b624d9
      Arnd Bergmann authored
      When CONFIG_ELF_CORE is disabled, we get a harmless warning in the compat
      version of binfmt_elf:
      
      fs/compat_binfmt_elf.c:58:13: error: 'cputime_to_compat_timeval' defined but not used [-Werror=unused-function]
      
      This was addressed in mainline Linux as part of a larger rework with commit
      cd19c364 ("fs/binfmt: Convert obsolete cputime type to nsecs").
      
      For 4.9 and earlier, this just shuts up the warning by adding an #ifdef
      around the function definition.
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      b8b624d9
    • Arnd Bergmann's avatar
      isdn: sc: work around type mismatch warning · 9e9c3045
      Arnd Bergmann authored
      This driver shows warnings on many architectures:
      
      drivers/isdn/sc/init.c: In function 'identify_board':
      drivers/isdn/sc/init.c:484:2: error: passing argument 1 of 'readl' makes pointer from integer without a cast [-Werror]
      
      In newer kernels, it was completely removed, but for the 4.4-stable
      series, let's just shut up that warning by adding an extra variable
      to do the necessary type cast.
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      9e9c3045
    • Arnd Bergmann's avatar
      power: bq27xxx_battery: mark some symbols __maybe_unused · e8988dbe
      Arnd Bergmann authored
      Without the I2C driver, we get a few warnings:
      
      drivers/power/bq27xxx_battery.c:288:12: error: 'bq27xxx_regs' defined but not used [-Werror=unused-variable]
       static u8 *bq27xxx_regs[] = {
                  ^
      drivers/power/bq27xxx_battery.c:994:12: error: 'bq27xxx_powersupply_init' defined but not used [-Werror=unused-function]
       static int bq27xxx_powersupply_init(struct bq27xxx_device_info *di,
                  ^
      drivers/power/bq27xxx_battery.c:1029:13: error: 'bq27xxx_powersupply_unregister' defined but not used [-Werror=unused-function]
       static void bq27xxx_powersupply_unregister(struct bq27xxx_device_info *di)
                   ^
      
      In mainline kernels, this was addressed by a larger rework in 703df6c0 ("power:
      bq27xxx_battery: Reorganize I2C into a module"). We probably don't want this backported
      into stable kernels, so instead let's shut up the warnings by marking the symbols
      as __maybe_unused.
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      e8988dbe
    • Arnd Bergmann's avatar
      Revert "power: bq27xxx_battery: Remove unneeded dependency in Kconfig" · 7131acef
      Arnd Bergmann authored
      This reverts commit 6bd03ce3, it was applied
      in error and cuased this link failure
      
      drivers/built-in.o: In function `bq27xxx_battery_i2c_read':
      core.c:(.text+0xa6da8): undefined reference to `i2c_transfer'
      drivers/built-in.o: In function `bq27xxx_battery_init':
      core.c:(.init.text+0x68e0): undefined reference to `i2c_register_driver'
      drivers/built-in.o: In function `bq27xxx_battery_exit':
      core.c:(.exit.text+0xc6c): undefined reference to `i2c_del_driver'
      
      Later upstream kernels fixed this with a larger rework in commit
      703df6c0 ("power: bq27xxx_battery: Reorganize I2C into a module"),
      but we cannot backport that to 4.4.
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      7131acef
    • Miklos Szeredi's avatar
      ncpfs: fix unused variable warning · 633c324b
      Miklos Szeredi authored
      commit 9a232de4 upstream.
      
      Without CONFIG_NCPFS_NLS the following warning is seen:
      
      fs/ncpfs/dir.c: In function 'ncp_hash_dentry':
      fs/ncpfs/dir.c:136:23: warning: unused variable 'sb' [-Wunused-variable]
         struct super_block *sb = dentry->d_sb;
      Signed-off-by: default avatarMiklos Szeredi <mszeredi@redhat.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      633c324b
    • Arnd Bergmann's avatar
      gpio: xgene: mark PM functions as __maybe_unused · ac331bd2
      Arnd Bergmann authored
      commit b115bebc upstream.
      
      When CONFIG_PM_SLEEP is disabled, we get a warning about unused functions:
      
      drivers/gpio/gpio-xgene.c:155:12: warning: 'xgene_gpio_resume' defined but not used [-Wunused-function]
       static int xgene_gpio_resume(struct device *dev)
                  ^~~~~~~~~~~~~~~~~
      drivers/gpio/gpio-xgene.c:142:12: warning: 'xgene_gpio_suspend' defined but not used [-Wunused-function]
       static int xgene_gpio_suspend(struct device *dev)
      
      The warnings are harmless and can be avoided by simplifying the code and marking
      the functions as __maybe_unused.
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      ac331bd2
    • Arnd Bergmann's avatar
      net: hp100: remove unnecessary #ifdefs · d9a4d80b
      Arnd Bergmann authored
      commit 747a1127 upstream.
      
      Building the hp100 ethernet driver causes warnings when both the PCI
      and EISA drivers are disabled:
      
      ethernet/hp/hp100.c: In function 'hp100_module_init':
      ethernet/hp/hp100.c:3047:2: warning: label 'out3' defined but not used [-Wunused-label]
      ethernet/hp/hp100.c: At top level:
      ethernet/hp/hp100.c:2828:13: warning: 'cleanup_dev' defined but not used [-Wunused-function]
      
      We can easily avoid the warnings and make the driver look slightly
      nicer by removing the #ifdefs that check for the CONFIG_PCI and
      CONFIG_EISA, as all the registration functions are designed to
      have no effect when the buses are disabled.
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      d9a4d80b
    • Jun Nie's avatar
      dmaengine: zx: fix build warning · 4b88c89b
      Jun Nie authored
      commit 067fdeb2 upstream.
      
      Fix build warning that related to PAGE_SIZE. The maximum DMA
      length has nothing to do with PAGE_SIZE, just use a fix number
      for the definition.
      
      drivers/dma/zx_dma.c: In function 'zx_dma_prep_memcpy':
      drivers/dma/zx_dma.c:523:8: warning: division by zero [-Wdiv-by-zero]
      drivers/dma/zx_dma.c: In function 'zx_dma_prep_slave_sg':
      drivers/dma/zx_dma.c:567:11: warning: division by zero [-Wdiv-by-zero]
      Signed-off-by: default avatarJun Nie <jun.nie@linaro.org>
      Tested-by: default avatarShawn Guo <shawn.guo@linaro.org>
      Signed-off-by: default avatarVinod Koul <vinod.koul@intel.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      4b88c89b
    • Arnd Bergmann's avatar
      perf/x86: Shut up false-positive -Wmaybe-uninitialized warning · e787fce4
      Arnd Bergmann authored
      commit 11d8b058 upstream.
      
      The intialization function checks for various failure scenarios, but
      unfortunately the compiler gets a little confused about the possible
      combinations, leading to a false-positive build warning when
      -Wmaybe-uninitialized is set:
      
        arch/x86/events/core.c: In function ‘init_hw_perf_events’:
        arch/x86/events/core.c:264:3: warning: ‘reg_fail’ may be used uninitialized in this function [-Wmaybe-uninitialized]
        arch/x86/events/core.c:264:3: warning: ‘val_fail’ may be used uninitialized in this function [-Wmaybe-uninitialized]
           pr_err(FW_BUG "the BIOS has corrupted hw-PMU resources (MSR %x is %Lx)\n",
      
      We can't actually run into this case, so this shuts up the warning
      by initializing the variables to a known-invalid state.
      Suggested-by: default avatarPeter Zijlstra <peterz@infradead.org>
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Andy Lutomirski <luto@kernel.org>
      Cc: Arnaldo Carvalho de Melo <acme@kernel.org>
      Cc: Josh Poimboeuf <jpoimboe@redhat.com>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Link: http://lkml.kernel.org/r/20170719125310.2487451-2-arnd@arndb.de
      Link: https://patchwork.kernel.org/patch/9392595/Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      e787fce4
    • Arnd Bergmann's avatar
      wireless: cw1200: use __maybe_unused to hide pm functions_ · d3843789
      Arnd Bergmann authored
      commit 836856e3 upstream.
      
      The cw1200 uses #ifdef to check for CONFIG_PM, but then
      uses SIMPLE_DEV_PM_OPS, which leaves the references out when
      CONFIG_PM_SLEEP is not defined, so we get a warning with
      PM=y && PM_SLEEP=n:
      
      drivers/net/wireless/st/cw1200/cw1200_spi.c:450:12: error: 'cw1200_spi_suspend' defined but not used [-Werror=unused-function]
      
      This removes the incorrect #ifdef and instead uses a __maybe_unused
      annotation to let the compiler know it can silently drop
      the function definition.
      
      For the DEV_PM_OPS definition, we can use an IS_ENABLED() check
      to avoid defining the structure when CONFIG_PM is not set without
      the #ifdef.
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      d3843789
    • Arnd Bergmann's avatar
      cw1200: fix bogus maybe-uninitialized warning · 6420c014
      Arnd Bergmann authored
      commit 7fc1503c upstream.
      
      On x86, the cw1200 driver produces a rather silly warning about the
      possible use of the 'ret' variable without an initialization
      presumably after being confused by the architecture specific definition
      of WARN_ON:
      
      drivers/net/wireless/st/cw1200/wsm.c: In function ‘wsm_handle_rx’:
      drivers/net/wireless/st/cw1200/wsm.c:1457:9: error: ‘ret’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
      
      We have already checked that 'count' is larger than 0 here, so
      we know that 'ret' is initialized. Changing the 'for' loop
      into do/while also makes this clear to the compiler.
      Suggested-by: default avatarDavid Laight <David.Laight@ACULAB.COM>
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      6420c014
    • Arnd Bergmann's avatar
      v4l: remove MEDIA_TUNER dependency for VIDEO_TUNER · 30ddc36c
      Arnd Bergmann authored
      commit 7c8fe516 upstream.
      
      em28xx selects VIDEO_TUNER, which has a dependency on MEDIA_TUNER,
      so we get a Kconfig warning if that is disabled:
      
      warning: (VIDEO_PVRUSB2 && VIDEO_USBVISION && VIDEO_GO7007 && VIDEO_AU0828_V4L2 && VIDEO_CX231XX && VIDEO_TM6000 && VIDEO_EM28XX && VIDEO_IVTV && VIDEO_MXB && VIDEO_CX18 && VIDEO_CX23885 && VIDEO_CX88 && VIDEO_BT848 && VIDEO_SAA7134 && VIDEO_SAA7164) selects VIDEO_TUNER which has unmet direct dependencies (MEDIA_SUPPORT && MEDIA_TUNER)
      
      VIDEO_TUNER does not actually depend on MEDIA_TUNER, and the
      dependency does nothing except cause the above warning, so let's
      remove it.
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@osg.samsung.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      30ddc36c
    • Arnd Bergmann's avatar
      hdpvr: hide unused variable · a32040f7
      Arnd Bergmann authored
      commit b97baa3e upstream.
      
      The i2c client pointer is only used when CONFIG_I2C is set, and
      otherwise produces a compile-time warning:
      
      drivers/media/usb/hdpvr/hdpvr-core.c: In function 'hdpvr_probe':
      drivers/media/usb/hdpvr/hdpvr-core.c:276:21: error: unused variable 'client' [-Werror=unused-variable]
      
      This uses the same #ifdef to hide the variable when the code using
      it is hidden.
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@osg.samsung.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      a32040f7
    • Thierry Reding's avatar
      drm/gma500: Sanity-check pipe index · 3d2ff113
      Thierry Reding authored
      commit 4f250706 upstream.
      
      If the DSI output isn't connected, then mdfld_dsi_encoder_get_pipe()
      will return -1. The mdfld_dsi_dp_mode_set() function doesn't properly
      check for this condition and causes the following compiler warnings:
      
      	  CC      drivers/gpu/drm/gma500/mdfld_dsi_dpi.o
      	drivers/gpu/drm/gma500/mdfld_dsi_dpi.c: In function ‘mdfld_dsi_dpi_mode_set’:
      	drivers/gpu/drm/gma500/mdfld_dsi_dpi.c:828:35: warning: array subscript is below array bounds [-Warray-bounds]
      	  u32 pipeconf = dev_priv->pipeconf[pipe];
      	                                   ^
      	drivers/gpu/drm/gma500/mdfld_dsi_dpi.c:829:33: warning: array subscript is below array bounds [-Warray-bounds]
      	  u32 dspcntr = dev_priv->dspcntr[pipe];
      	                                 ^
      
      Fix this by checking for a valid pipe before indexing the pipeconf and
      dspcntr arrays.
      
      Cc: Patrik Jakobsson <patrik.r.jakobsson@gmail.com>
      Reviewed-by: default avatarPatrik Jakobsson <patrik.r.jakobsson@gmail.com>
      Signed-off-by: default avatarThierry Reding <treding@nvidia.com>
      Signed-off-by: default avatarBoris Brezillon <boris.brezillon@free-electrons.com>
      Link: http://patchwork.freedesktop.org/patch/msgid/1450178476-26284-2-git-send-email-boris.brezillon@free-electrons.comSigned-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      3d2ff113
    • Heikki Krogerus's avatar
      serial: 8250_mid: fix broken DMA dependency · ab7b4a32
      Heikki Krogerus authored
      commit 0ff42305 upstream.
      
      In order to enable HSU DMA PCI driver, the HSU DMA Engine
      must be enabled. This add a check for that.
      Reported-by: default avatarkbuild test robot <fengguang.wu@intel.com>
      Signed-off-by: default avatarHeikki Krogerus <heikki.krogerus@linux.intel.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      ab7b4a32
    • Arnd Bergmann's avatar
      ASoC: rockchip: use __maybe_unused to hide st_irq_syscfg_resume · 8caadd7b
      Arnd Bergmann authored
      commit d8fc2198 upstream.
      
      The rockchip spdif driver uses SIMPLE_DEV_PM_OPS to conditionally
      set its power management functions, but we get a warning
      about rk_spdif_runtime_resume being unused when CONFIG_PM is not
      set:
      
      sound/soc/rockchip/rockchip_spdif.c:67:12: error: 'rk_spdif_runtime_resume' defined but not used [-Werror=unused-function]
      
      This adds a __maybe_unused annotation so the compiler knows
      it can silently drop it instead of warning.
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Signed-off-by: default avatarMark Brown <broonie@kernel.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      8caadd7b
    • Arnd Bergmann's avatar
      ISDN: eicon: reduce stack size of sig_ind function · 31f92b9f
      Arnd Bergmann authored
      commit 27d80718 upstream.
      
      I noticed that this function uses a lot of kernel stack when the
      "latent entropy" plugin is enabled:
      
      drivers/isdn/hardware/eicon/message.c: In function 'sig_ind':
      drivers/isdn/hardware/eicon/message.c:6113:1: error: the frame size of 1168 bytes is larger than 1152 bytes [-Werror=frame-larger-than=]
      
      We currently don't warn about this, as we raise the warning limit
      to 2048 bytes in mainline, but I'd like to lower that limit again
      in the future, and this function can easily be changed to be more
      efficient and avoid that warning, by making some of its local
      variables 'const'.
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      31f92b9f
    • Arnd Bergmann's avatar
      em28xx: only use mt9v011 if camera support is enabled · b17b3fdc
      Arnd Bergmann authored
      commit 190b23b4 upstream.
      
      In randconfig builds that select VIDEO_EM28XX_V4L2 and
      MEDIA_SUBDRV_AUTOSELECT, but not MEDIA_CAMERA_SUPPORT, we get
      a Kconfig warning:
      
       warning: (VIDEO_EM28XX_V4L2) selects VIDEO_MT9V011 which has unmet direct dependencies (MEDIA_SUPPORT && I2C && VIDEO_V4L2 && MEDIA_CAMERA_SUPPORT)
      
      This avoids the warning by making that 'select' conditional on
      MEDIA_CAMERA_SUPPORT. Alternatively we could mark EM28XX as
      'depends on MEDIA_CAMERA_SUPPORT', but it does not seem to
      have any real dependency on that itself.
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@s-opensource.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      b17b3fdc
    • Arnd Bergmann's avatar
      go7007: add MEDIA_CAMERA_SUPPORT dependency · 48528cb6
      Arnd Bergmann authored
      commit fa6317ee upstream.
      
      If MEDIA_SUBDRV_AUTOSELECT and VIDEO_GO7007 are both set, we
      automatically select VIDEO_OV7640, but that depends on MEDIA_CAMERA_SUPPORT,
      so we get a Kconfig warning if that is disabled:
      
      warning: (VIDEO_GO7007) selects VIDEO_OV7640 which has unmet direct dependencies (MEDIA_SUPPORT && I2C && VIDEO_V4L2 && MEDIA_CAMERA_SUPPORT)
      
      This adds another dependency so we don't accidentally select
      it when it is unavailable.
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@s-opensource.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      48528cb6
    • Arnd Bergmann's avatar
      KVM: add X86_LOCAL_APIC dependency · 6f2f10ea
      Arnd Bergmann authored
      commit e42eef4b upstream.
      
      The rework of the posted interrupt handling broke building without
      support for the local APIC:
      
      ERROR: "boot_cpu_physical_apicid" [arch/x86/kvm/kvm-intel.ko] undefined!
      
      That configuration is probably not particularly useful anyway, so
      we can avoid the randconfig failures by adding a Kconfig dependency.
      
      Fixes: 8b306e2f ("KVM: VMX: avoid double list add with VT-d posted interrupts")
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Signed-off-by: default avatarRadim Krčmář <rkrcmar@redhat.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      6f2f10ea
    • Arnd Bergmann's avatar
      Input: tca8418_keypad - hide gcc-4.9 -Wmaybe-uninitialized warning · 9975bd33
      Arnd Bergmann authored
      commit ea4348c8 upstream.
      
      Older versions of gcc warn about the tca8418_irq_handler function
      as they can't keep track of the variable assignment inside of the
      loop when using the -Wmaybe-unintialized flag:
      
      drivers/input/keyboard/tca8418_keypad.c: In function ‘tca8418_irq_handler’:
      drivers/input/keyboard/tca8418_keypad.c:172:9: error: ‘reg’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
      drivers/input/keyboard/tca8418_keypad.c:165:5: note: ‘reg’ was declared here
      
      This is fixed in gcc-6, but it's possible to rearrange the code
      in a way that avoids the warning on older compilers as well.
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Signed-off-by: default avatarDmitry Torokhov <dmitry.torokhov@gmail.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      9975bd33
    • Arnd Bergmann's avatar
      drm/nouveau: hide gcc-4.9 -Wmaybe-uninitialized · c19bb067
      Arnd Bergmann authored
      commit b74c0a99 upstream.
      
      gcc-4.9 notices that the validate_init() function returns unintialized
      data when called with a zero 'nr_buffers' argument, when called with the
      -Wmaybe-uninitialized flag:
      
      drivers/gpu/drm/nouveau/nouveau_gem.c: In function ‘validate_init.isra.6’:
      drivers/gpu/drm/nouveau/nouveau_gem.c:457:5: error: ‘ret’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
      
      However, the only caller of this function always passes a nonzero
      argument, and gcc-6 is clever enough to take this into account and
      not warn about it any more.
      
      Adding an explicit initialization to -EINVAL here is correct even if
      the caller changed, and it avoids the warning on gcc-4.9 as well.
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Reviewed-By: default avatarKarol Herbst <karolherbst@gmail.com>
      Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      c19bb067
    • Arnd Bergmann's avatar
      tc358743: fix register i2c_rd/wr functions · f9e55370
      Arnd Bergmann authored
      commit 3538aa6e upstream.
      
      While testing with CONFIG_UBSAN, I got this warning:
      
      drivers/media/i2c/tc358743.c: In function 'tc358743_probe':
      drivers/media/i2c/tc358743.c:1930:1: error: the frame size of 2480 bytes is larger than 2048 bytes [-Werror=frame-larger-than=]
      
      The problem is that the i2c_rd8/wr8/rd16/... functions in this driver pass
      a pointer to a local variable into a common function, and each call to one
      of them adds another variable plus redzone to the stack.
      
      I also noticed that the way this is done is broken on big-endian machines,
      as we copy the registers in CPU byte order.
      
      To address both those problems, I'm adding two helper functions for reading
      a register of up to 32 bits with correct endianess and change all other
      functions to use that instead. Just to be sure we don't get the problem
      back with changed optimizations in gcc, I'm also marking the new functions
      as 'noinline', although my tests with gcc-7 don't require that.
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Signed-off-by: default avatarHans Verkuil <hans.verkuil@cisco.com>
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@s-opensource.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      f9e55370
    • Randy Dunlap's avatar
      staging: unisys: visorinput depends on INPUT · 0176ed74
      Randy Dunlap authored
      commit 82ddecfe upstream.
      
      Fix build errors by limiting UNISYS_VISORINPUT to the INPUT kconfig
      setting.
      
      drivers/built-in.o: In function `visorinput_remove':
      visorinput.c:(.text+0x20802e): undefined reference to `input_unregister_device'
      drivers/built-in.o: In function `visorinput_probe':
      visorinput.c:(.text+0x208177): undefined reference to `input_allocate_device'
      visorinput.c:(.text+0x208241): undefined reference to `input_register_device'
      visorinput.c:(.text+0x20824d): undefined reference to `input_free_device'
      visorinput.c:(.text+0x208286): undefined reference to `input_allocate_device'
      visorinput.c:(.text+0x208302): undefined reference to `input_set_abs_params'
      visorinput.c:(.text+0x20831a): undefined reference to `input_set_abs_params'
      visorinput.c:(.text+0x20833f): undefined reference to `input_register_device'
      visorinput.c:(.text+0x20834b): undefined reference to `input_free_device'
      visorinput.c:(.text+0x20835f): undefined reference to `input_set_capability'
      drivers/built-in.o: In function `visorinput_channel_interrupt':
      visorinput.c:(.text+0x20851e): undefined reference to `input_event'
      visorinput.c:(.text+0x20862c): undefined reference to `input_event'
      drivers/built-in.o: In function `input_report_key':
      visorinput.c:(.text+0x207fd1): undefined reference to `input_event'
      drivers/built-in.o: In function `input_sync':
      visorinput.c:(.text+0x207fdc): undefined reference to `input_event'
      Signed-off-by: default avatarRandy Dunlap <rdunlap@infradead.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      0176ed74
    • Luis R. Rodriguez's avatar
      i2c: remove __init from i2c_register_board_info() · c4514d8b
      Luis R. Rodriguez authored
      commit 5abe9b26 upstream.
      
      As of next-20160607 with allyesconfig we get this linker failure:
      
        MODPOST vmlinux.o
      WARNING: vmlinux.o(.text+0x21bc0d): Section mismatch in reference from
      the function intel_scu_devices_create() to the function
      .init.text:i2c_register_board_info()
      
      This is caused by the fact that intel_scu_devices_create() calls
      i2c_register_board_info() and intel_scu_devices_create() is not
      annotated with __init. This typically involves manual code
      inspection and if one is certain this is correct we would
      just peg intel_scu_devices_create() with a __ref annotation.
      
      In this case this would be wrong though as the
      intel_scu_devices_create() call is exported, and used in
      the ipc_probe() on drivers/platform/x86/intel_scu_ipc.c.
      The issue is that even though builtin_pci_driver(ipc_driver)
      is used this just exposes the probe routine, which can occur
      at any point in time if this bus supports hotplug. A race
      can happen between kernel_init_freeable() that calls the init
      calls (in this case registeres the intel_scu_ipc.c driver, and
      later free_initmem(), which would free the i2c_register_board_info().
      If a probe happens later in boot i2c_register_board_info() would
      not be present and we should get a page fault.
      Signed-off-by: default avatarLuis R. Rodriguez <mcgrof@kernel.org>
      [wsa: made function declaration a one-liner]
      Signed-off-by: default avatarWolfram Sang <wsa@the-dreams.de>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      c4514d8b
    • Arnd Bergmann's avatar
      b2c2: flexcop: avoid unused function warnings · 7a06f431
      Arnd Bergmann authored
      commit 733d0def upstream.
      
      The flexcop driver has two functions that are normally used, except
      when multiple frontend drivers are disabled:
      
      drivers/media/common/b2c2/flexcop-fe-tuner.c:42:12: warning: 'flexcop_set_voltage' defined but not used [-Wunused-function]
      drivers/media/common/b2c2/flexcop-fe-tuner.c:71:12: warning: 'flexcop_sleep' defined but not used [-Wunused-function]
      
      This avoids the build warning by updating the #ifdef for flexcop_set_voltage
      to the exact condition under which it is used. For flexcop_sleep, the
      condition is rather complex, so I resort to marking it as __maybe_unused,
      so the compiler can silently drop it.
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@osg.samsung.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      7a06f431