1. 04 11月, 2014 3 次提交
  2. 28 10月, 2014 7 次提交
    • P
      sched: Exclude cond_resched() from nested sleep test · 3427445a
      Peter Zijlstra 提交于
      cond_resched() is a preemption point, not strictly a blocking
      primitive, so exclude it from the ->state test.
      
      In particular, preemption preserves task_struct::state.
      Signed-off-by: NPeter Zijlstra (Intel) <peterz@infradead.org>
      Cc: tglx@linutronix.de
      Cc: ilya.dryomov@inktank.com
      Cc: umgwanakikbuti@gmail.com
      Cc: oleg@redhat.com
      Cc: Alex Elder <alex.elder@linaro.org>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Cc: Axel Lin <axel.lin@ingics.com>
      Cc: Daniel Borkmann <dborkman@redhat.com>
      Cc: Dave Jones <davej@redhat.com>
      Cc: Jason Baron <jbaron@akamai.com>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Rusty Russell <rusty@rustcorp.com.au>
      Cc: Steven Rostedt <rostedt@goodmis.org>
      Link: http://lkml.kernel.org/r/20140924082242.656559952@infradead.orgSigned-off-by: NIngo Molnar <mingo@kernel.org>
      3427445a
    • P
      sched: Debug nested sleeps · 8eb23b9f
      Peter Zijlstra 提交于
      Validate we call might_sleep() with TASK_RUNNING, which catches places
      where we nest blocking primitives, eg. mutex usage in a wait loop.
      
      Since all blocking is arranged through task_struct::state, nesting
      this will cause the inner primitive to set TASK_RUNNING and the outer
      will thus not block.
      
      Another observed problem is calling a blocking function from
      schedule()->sched_submit_work()->blk_schedule_flush_plug() which will
      then destroy the task state for the actual __schedule() call that
      comes after it.
      Signed-off-by: NPeter Zijlstra (Intel) <peterz@infradead.org>
      Cc: tglx@linutronix.de
      Cc: ilya.dryomov@inktank.com
      Cc: umgwanakikbuti@gmail.com
      Cc: oleg@redhat.com
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Link: http://lkml.kernel.org/r/20140924082242.591637616@infradead.orgSigned-off-by: NIngo Molnar <mingo@kernel.org>
      8eb23b9f
    • P
      sched, exit: Deal with nested sleeps · 1029a2b5
      Peter Zijlstra 提交于
      do_wait() is a big wait loop, but we set TASK_RUNNING too late; we end
      up calling potential sleeps before we reset it.
      
      Not strictly a bug since we're guaranteed to exit the loop and not
      call schedule(); put in annotations to quiet might_sleep().
      
       WARNING: CPU: 0 PID: 1 at ../kernel/sched/core.c:7123 __might_sleep+0x7e/0x90()
       do not call blocking ops when !TASK_RUNNING; state=1 set at [<ffffffff8109a788>] do_wait+0x88/0x270
      
       Call Trace:
        [<ffffffff81694991>] dump_stack+0x4e/0x7a
        [<ffffffff8109877c>] warn_slowpath_common+0x8c/0xc0
        [<ffffffff8109886c>] warn_slowpath_fmt+0x4c/0x50
        [<ffffffff810bca6e>] __might_sleep+0x7e/0x90
        [<ffffffff811a1c15>] might_fault+0x55/0xb0
        [<ffffffff8109a3fb>] wait_consider_task+0x90b/0xc10
        [<ffffffff8109a804>] do_wait+0x104/0x270
        [<ffffffff8109b837>] SyS_wait4+0x77/0x100
        [<ffffffff8169d692>] system_call_fastpath+0x16/0x1b
      Signed-off-by: NPeter Zijlstra (Intel) <peterz@infradead.org>
      Cc: tglx@linutronix.de
      Cc: umgwanakikbuti@gmail.com
      Cc: ilya.dryomov@inktank.com
      Cc: Alex Elder <alex.elder@linaro.org>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Cc: Axel Lin <axel.lin@ingics.com>
      Cc: Daniel Borkmann <dborkman@redhat.com>
      Cc: Dave Jones <davej@redhat.com>
      Cc: Guillaume Morin <guillaume@morinfr.org>
      Cc: Ionut Alexa <ionut.m.alexa@gmail.com>
      Cc: Jason Baron <jbaron@akamai.com>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Michal Hocko <mhocko@suse.cz>
      Cc: Michal Schmidt <mschmidt@redhat.com>
      Cc: Oleg Nesterov <oleg@redhat.com>
      Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
      Cc: Rik van Riel <riel@redhat.com>
      Cc: Rusty Russell <rusty@rustcorp.com.au>
      Cc: Steven Rostedt <rostedt@goodmis.org>
      Link: http://lkml.kernel.org/r/20140924082242.186408915@infradead.orgSigned-off-by: NIngo Molnar <mingo@kernel.org>
      1029a2b5
    • P
      sched/wait: Add might_sleep() checks · e22b886a
      Peter Zijlstra 提交于
      Add more might_sleep() checks, suppose someone put a wait_event() like
      thing in a wait loop..
      
      Can't put might_sleep() in ___wait_event() because there's the locked
      primitives which call ___wait_event() with locks held.
      Signed-off-by: NPeter Zijlstra (Intel) <peterz@infradead.org>
      Cc: tglx@linutronix.de
      Cc: ilya.dryomov@inktank.com
      Cc: umgwanakikbuti@gmail.com
      Cc: Oleg Nesterov <oleg@redhat.com>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Link: http://lkml.kernel.org/r/20140924082242.119255706@infradead.orgSigned-off-by: NIngo Molnar <mingo@kernel.org>
      e22b886a
    • P
      sched/wait: Provide infrastructure to deal with nested blocking · 61ada528
      Peter Zijlstra 提交于
      There are a few places that call blocking primitives from wait loops,
      provide infrastructure to support this without the typical
      task_struct::state collision.
      
      We record the wakeup in wait_queue_t::flags which leaves
      task_struct::state free to be used by others.
      Signed-off-by: NPeter Zijlstra (Intel) <peterz@infradead.org>
      Reviewed-by: NOleg Nesterov <oleg@redhat.com>
      Cc: tglx@linutronix.de
      Cc: ilya.dryomov@inktank.com
      Cc: umgwanakikbuti@gmail.com
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Link: http://lkml.kernel.org/r/20140924082242.051202318@infradead.orgSigned-off-by: NIngo Molnar <mingo@kernel.org>
      61ada528
    • J
      sched/deadline: Ensure that updates to exclusive cpusets don't break AC · f82f8042
      Juri Lelli 提交于
      How we deal with updates to exclusive cpusets is currently broken.
      As an example, suppose we have an exclusive cpuset composed of
      two cpus: A[cpu0,cpu1]. We can assign SCHED_DEADLINE task to it
      up to the allowed bandwidth. If we want now to modify cpusetA's
      cpumask, we have to check that removing a cpu's amount of
      bandwidth doesn't break AC guarantees. This thing isn't checked
      in the current code.
      
      This patch fixes the problem above, denying an update if the
      new cpumask won't have enough bandwidth for SCHED_DEADLINE tasks
      that are currently active.
      Signed-off-by: NJuri Lelli <juri.lelli@arm.com>
      Signed-off-by: NPeter Zijlstra (Intel) <peterz@infradead.org>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Li Zefan <lizefan@huawei.com>
      Cc: cgroups@vger.kernel.org
      Link: http://lkml.kernel.org/r/5433E6AF.5080105@arm.comSigned-off-by: NIngo Molnar <mingo@kernel.org>
      f82f8042
    • J
      sched/deadline: Fix bandwidth check/update when migrating tasks between exclusive cpusets · 7f51412a
      Juri Lelli 提交于
      Exclusive cpusets are the only way users can restrict SCHED_DEADLINE tasks
      affinity (performing what is commonly called clustered scheduling).
      Unfortunately, such thing is currently broken for two reasons:
      
       - No check is performed when the user tries to attach a task to
         an exlusive cpuset (recall that exclusive cpusets have an
         associated maximum allowed bandwidth).
      
       - Bandwidths of source and destination cpusets are not correctly
         updated after a task is migrated between them.
      
      This patch fixes both things at once, as they are opposite faces
      of the same coin.
      
      The check is performed in cpuset_can_attach(), as there aren't any
      points of failure after that function. The updated is split in two
      halves. We first reserve bandwidth in the destination cpuset, after
      we pass the check in cpuset_can_attach(). And we then release
      bandwidth from the source cpuset when the task's affinity is
      actually changed. Even if there can be time windows when sched_setattr()
      may erroneously fail in the source cpuset, we are fine with it, as
      we can't perfom an atomic update of both cpusets at once.
      Reported-by: NDaniel Wagner <daniel.wagner@bmw-carit.de>
      Reported-by: NVincent Legout <vincent@legout.info>
      Signed-off-by: NJuri Lelli <juri.lelli@arm.com>
      Signed-off-by: NPeter Zijlstra (Intel) <peterz@infradead.org>
      Cc: Dario Faggioli <raistlin@linux.it>
      Cc: Michael Trimarchi <michael@amarulasolutions.com>
      Cc: Fabio Checconi <fchecconi@gmail.com>
      Cc: michael@amarulasolutions.com
      Cc: luca.abeni@unitn.it
      Cc: Li Zefan <lizefan@huawei.com>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: cgroups@vger.kernel.org
      Link: http://lkml.kernel.org/r/1411118561-26323-3-git-send-email-juri.lelli@arm.comSigned-off-by: NIngo Molnar <mingo@kernel.org>
      7f51412a
  3. 24 10月, 2014 8 次提交
    • W
      kvm: vfio: fix unregister kvm_device_ops of vfio · 571ee1b6
      Wanpeng Li 提交于
      After commit 80ce1639 (KVM: VFIO: register kvm_device_ops dynamically),
      kvm_device_ops of vfio can be registered dynamically. Commit 3c3c29fd
      (kvm-vfio: do not use module_init) move the dynamic register invoked by
      kvm_init in order to fix broke unloading of the kvm module. However,
      kvm_device_ops of vfio is unregistered after rmmod kvm-intel module
      which lead to device type collision detection warning after kvm-intel
      module reinsmod.
      
          WARNING: CPU: 1 PID: 10358 at /root/cathy/kvm/arch/x86/kvm/../../../virt/kvm/kvm_main.c:3289 kvm_init+0x234/0x282 [kvm]()
          Modules linked in: kvm_intel(O+) kvm(O) nfsv3 nfs_acl auth_rpcgss oid_registry nfsv4 dns_resolver nfs fscache lockd sunrpc pci_stub bridge stp llc autofs4 8021q cpufreq_ondemand ipv6 joydev microcode pcspkr igb i2c_algo_bit ehci_pci ehci_hcd e1000e i2c_i801 ixgbe ptp pps_core hwmon mdio tpm_tis tpm ipmi_si ipmi_msghandler acpi_cpufreq isci libsas scsi_transport_sas button dm_mirror dm_region_hash dm_log dm_mod [last unloaded: kvm_intel]
          CPU: 1 PID: 10358 Comm: insmod Tainted: G        W  O   3.17.0-rc1 #2
          Hardware name: Intel Corporation S2600CP/S2600CP, BIOS RMLSDP.86I.00.29.D696.1311111329 11/11/2013
           0000000000000cd9 ffff880ff08cfd18 ffffffff814a61d9 0000000000000cd9
           0000000000000000 ffff880ff08cfd58 ffffffff810417b7 ffff880ff08cfd48
           ffffffffa045bcac ffffffffa049c420 0000000000000040 00000000000000ff
          Call Trace:
           [<ffffffff814a61d9>] dump_stack+0x49/0x60
           [<ffffffff810417b7>] warn_slowpath_common+0x7c/0x96
           [<ffffffffa045bcac>] ? kvm_init+0x234/0x282 [kvm]
           [<ffffffff810417e6>] warn_slowpath_null+0x15/0x17
           [<ffffffffa045bcac>] kvm_init+0x234/0x282 [kvm]
           [<ffffffffa016e995>] vmx_init+0x1bf/0x42a [kvm_intel]
           [<ffffffffa016e7d6>] ? vmx_check_processor_compat+0x64/0x64 [kvm_intel]
           [<ffffffff810002ab>] do_one_initcall+0xe3/0x170
           [<ffffffff811168a9>] ? __vunmap+0xad/0xb8
           [<ffffffff8109c58f>] do_init_module+0x2b/0x174
           [<ffffffff8109d414>] load_module+0x43e/0x569
           [<ffffffff8109c6d8>] ? do_init_module+0x174/0x174
           [<ffffffff8109c75a>] ? copy_module_from_user+0x39/0x82
           [<ffffffff8109b7dd>] ? module_sect_show+0x20/0x20
           [<ffffffff8109d65f>] SyS_init_module+0x54/0x81
           [<ffffffff814a9a12>] system_call_fastpath+0x16/0x1b
          ---[ end trace 0626f4a3ddea56f3 ]---
      
      The bug can be reproduced by:
      
          rmmod kvm_intel.ko
          insmod kvm_intel.ko
      
      without rmmod/insmod kvm.ko
      This patch fixes the bug by unregistering kvm_device_ops of vfio when the
      kvm-intel module is removed.
      Reported-by: NLiu Rongrong <rongrongx.liu@intel.com>
      Fixes: 3c3c29fdSigned-off-by: NWanpeng Li <wanpeng.li@linux.intel.com>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      571ee1b6
    • M
      fs: limit filesystem stacking depth · 69c433ed
      Miklos Szeredi 提交于
      Add a simple read-only counter to super_block that indicates how deep this
      is in the stack of filesystems.  Previously ecryptfs was the only stackable
      filesystem and it explicitly disallowed multiple layers of itself.
      
      Overlayfs, however, can be stacked recursively and also may be stacked
      on top of ecryptfs or vice versa.
      
      To limit the kernel stack usage we must limit the depth of the
      filesystem stack.  Initially the limit is set to 2.
      Signed-off-by: NMiklos Szeredi <mszeredi@suse.cz>
      69c433ed
    • M
      vfs: add whiteout support · 787fb6bc
      Miklos Szeredi 提交于
      Whiteout isn't actually a new file type, but is represented as a char
      device (Linus's idea) with 0/0 device number.
      
      This has several advantages compared to introducing a new whiteout file
      type:
      
       - no userspace API changes (e.g. trivial to make backups of upper layer
         filesystem, without losing whiteouts)
      
       - no fs image format changes (you can boot an old kernel/fsck without
         whiteout support and things won't break)
      
       - implementation is trivial
      Signed-off-by: NMiklos Szeredi <mszeredi@suse.cz>
      787fb6bc
    • M
      vfs: export check_sticky() · cbdf35bc
      Miklos Szeredi 提交于
      It's already duplicated in btrfs and about to be used in overlayfs too.
      
      Move the sticky bit check to an inline helper and call the out-of-line
      helper only in the unlikly case of the sticky bit being set.
      Signed-off-by: NMiklos Szeredi <mszeredi@suse.cz>
      cbdf35bc
    • M
      vfs: introduce clone_private_mount() · c771d683
      Miklos Szeredi 提交于
      Overlayfs needs a private clone of the mount, so create a function for
      this and export to modules.
      Signed-off-by: NMiklos Szeredi <mszeredi@suse.cz>
      c771d683
    • M
      vfs: export __inode_permission() to modules · bd5d0856
      Miklos Szeredi 提交于
      We need to be able to check inode permissions (but not filesystem implied
      permissions) for stackable filesystems.  Expose this interface for overlayfs.
      Signed-off-by: NMiklos Szeredi <mszeredi@suse.cz>
      bd5d0856
    • M
      vfs: export do_splice_direct() to modules · 1c118596
      Miklos Szeredi 提交于
      Export do_splice_direct() to modules.  Needed by overlay filesystem.
      Signed-off-by: NMiklos Szeredi <mszeredi@suse.cz>
      1c118596
    • M
      vfs: add i_op->dentry_open() · 4aa7c634
      Miklos Szeredi 提交于
      Add a new inode operation i_op->dentry_open().  This is for stacked filesystems
      that want to return a struct file from a different filesystem.
      Signed-off-by: NMiklos Szeredi <mszeredi@suse.cz>
      4aa7c634
  4. 23 10月, 2014 6 次提交
    • B
      uprobes: Remove "weak" from function declarations · 271a9c35
      Bjorn Helgaas 提交于
      For the following interfaces:
      
        set_swbp()
        set_orig_insn()
        is_swbp_insn()
        is_trap_insn()
        uprobe_get_swbp_addr()
        arch_uprobe_ignore()
        arch_uprobe_copy_ixol()
      
      kernel/events/uprobes.c provides default definitions explicitly marked
      "weak".  Some architectures provide their own definitions intended to
      override the defaults, but the "weak" attribute on the declarations applied
      to the arch definitions as well, so the linker chose one based on link
      order (see 10629d71 ("PCI: Remove __weak annotation from
      pcibios_get_phb_of_node decl")).
      
      Remove the "weak" attribute from the declarations so we always prefer a
      non-weak definition over the weak one, independent of link order.
      Signed-off-by: NBjorn Helgaas <bhelgaas@google.com>
      Acked-by: NIngo Molnar <mingo@kernel.org>
      Acked-by: NSrikar Dronamraju <srikar@linux.vnet.ibm.com>
      CC: Victor Kamensky <victor.kamensky@linaro.org>
      CC: Oleg Nesterov <oleg@redhat.com>
      CC: David A. Long <dave.long@linaro.org>
      CC: Ananth N Mavinakayanahalli <ananth@in.ibm.com>
      271a9c35
    • B
      memory-hotplug: Remove "weak" from memory_block_size_bytes() declaration · e0a8400c
      Bjorn Helgaas 提交于
      drivers/base/memory.c provides a default memory_block_size_bytes()
      definition explicitly marked "weak".  Several architectures provide their
      own definitions intended to override the default, but the "weak" attribute
      on the declaration applied to the arch definitions as well, so the linker
      chose one based on link order (see 10629d71 ("PCI: Remove __weak
      annotation from pcibios_get_phb_of_node decl")).
      
      Remove the "weak" attribute from the declaration so we always prefer a
      non-weak definition over the weak one, independent of link order.
      
      Fixes: 41f10726 ("drivers: base: Add prototype declaration to the header file")
      Signed-off-by: NBjorn Helgaas <bhelgaas@google.com>
      Acked-by: NAndrew Morton <akpm@linux-foundation.org>
      CC: Rashika Kheria <rashika.kheria@gmail.com>
      CC: Nathan Fontenot <nfont@austin.ibm.com>
      CC: Anton Blanchard <anton@au1.ibm.com>
      CC: Heiko Carstens <heiko.carstens@de.ibm.com>
      CC: Yinghai Lu <yinghai@kernel.org>
      e0a8400c
    • B
      kgdb: Remove "weak" from kgdb_arch_pc() declaration · 107bcc6d
      Bjorn Helgaas 提交于
      kernel/debug/debug_core.c provides a default kgdb_arch_pc() definition
      explicitly marked "weak".  Several architectures provide their own
      definitions intended to override the default, but the "weak" attribute on
      the declaration applied to the arch definitions as well, so the linker
      chose one based on link order (see 10629d71 ("PCI: Remove __weak
      annotation from pcibios_get_phb_of_node decl")).
      
      Remove the "weak" attribute from the declaration so we always prefer a
      non-weak definition over the weak one, independent of link order.
      
      Fixes: 688b744d ("kgdb: fix signedness mixmatches, add statics, add declaration to header")
      Tested-by: Vineet Gupta <vgupta@synopsys.com>	# for ARC build
      Signed-off-by: NBjorn Helgaas <bhelgaas@google.com>
      Reviewed-by: NHarvey Harrison <harvey.harrison@gmail.com>
      107bcc6d
    • B
      vmcore: Remove "weak" from function declarations · 5ab03ac5
      Bjorn Helgaas 提交于
      For the following functions:
      
        elfcorehdr_alloc()
        elfcorehdr_free()
        elfcorehdr_read()
        elfcorehdr_read_notes()
        remap_oldmem_pfn_range()
      
      fs/proc/vmcore.c provides default definitions explicitly marked "weak".
      arch/s390 provides its own definitions intended to override the default
      ones, but the "weak" attribute on the declarations applied to the s390
      definitions as well, so the linker chose one based on link order (see
      10629d71 ("PCI: Remove __weak annotation from pcibios_get_phb_of_node
      decl")).
      
      Remove the "weak" attribute from the declarations so we always prefer a
      non-weak definition over the weak one, independent of link order.
      
      Fixes: be8a8d06 ("vmcore: introduce ELF header in new memory feature")
      Fixes: 9cb21813 ("vmcore: introduce remap_oldmem_pfn_range()")
      Signed-off-by: NBjorn Helgaas <bhelgaas@google.com>
      Acked-by: NAndrew Morton <akpm@linux-foundation.org>
      Acked-by: NVivek Goyal <vgoyal@redhat.com>
      CC: Michael Holzheu <holzheu@linux.vnet.ibm.com>
      5ab03ac5
    • B
      clocksource: Remove "weak" from clocksource_default_clock() declaration · 96a2adbc
      Bjorn Helgaas 提交于
      kernel/time/jiffies.c provides a default clocksource_default_clock()
      definition explicitly marked "weak".  arch/s390 provides its own definition
      intended to override the default, but the "weak" attribute on the
      declaration applied to the s390 definition as well, so the linker chose one
      based on link order (see 10629d71 ("PCI: Remove __weak annotation from
      pcibios_get_phb_of_node decl")).
      
      Remove the "weak" attribute from the clocksource_default_clock()
      declaration so we always prefer a non-weak definition over the weak one,
      independent of link order.
      
      Fixes: f1b82746 ("clocksource: Cleanup clocksource selection")
      Signed-off-by: NBjorn Helgaas <bhelgaas@google.com>
      Acked-by: NJohn Stultz <john.stultz@linaro.org>
      Acked-by: NIngo Molnar <mingo@kernel.org>
      CC: Daniel Lezcano <daniel.lezcano@linaro.org>
      CC: Martin Schwidefsky <schwidefsky@de.ibm.com>
      96a2adbc
    • B
      audit: Remove "weak" from audit_classify_compat_syscall() declaration · 9e8beeb7
      Bjorn Helgaas 提交于
      There's only one audit_classify_compat_syscall() definition, so it doesn't
      need to be weak.
      
      Remove the "weak" attribute from the audit_classify_compat_syscall()
      declaration.
      Signed-off-by: NBjorn Helgaas <bhelgaas@google.com>
      Acked-by: NRichard Guy Briggs <rgb@redhat.com>
      CC: AKASHI Takahiro <takahiro.akashi@linaro.org>
      9e8beeb7
  5. 22 10月, 2014 1 次提交
    • M
      OOM, PM: OOM killed task shouldn't escape PM suspend · 5695be14
      Michal Hocko 提交于
      PM freezer relies on having all tasks frozen by the time devices are
      getting frozen so that no task will touch them while they are getting
      frozen. But OOM killer is allowed to kill an already frozen task in
      order to handle OOM situtation. In order to protect from late wake ups
      OOM killer is disabled after all tasks are frozen. This, however, still
      keeps a window open when a killed task didn't manage to die by the time
      freeze_processes finishes.
      
      Reduce the race window by checking all tasks after OOM killer has been
      disabled. This is still not race free completely unfortunately because
      oom_killer_disable cannot stop an already ongoing OOM killer so a task
      might still wake up from the fridge and get killed without
      freeze_processes noticing. Full synchronization of OOM and freezer is,
      however, too heavy weight for this highly unlikely case.
      
      Introduce and check oom_kills counter which gets incremented early when
      the allocator enters __alloc_pages_may_oom path and only check all the
      tasks if the counter changes during the freezing attempt. The counter
      is updated so early to reduce the race window since allocator checked
      oom_killer_disabled which is set by PM-freezing code. A false positive
      will push the PM-freezer into a slow path but that is not a big deal.
      
      Changes since v1
      - push the re-check loop out of freeze_processes into
        check_frozen_processes and invert the condition to make the code more
        readable as per Rafael
      
      Fixes: f660daac (oom: thaw threads if oom killed thread is frozen before deferring)
      Cc: 3.2+ <stable@vger.kernel.org> # 3.2+
      Signed-off-by: NMichal Hocko <mhocko@suse.cz>
      Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      5695be14
  6. 21 10月, 2014 3 次提交
  7. 20 10月, 2014 1 次提交
  8. 17 10月, 2014 1 次提交
    • D
      random: add and use memzero_explicit() for clearing data · d4c5efdb
      Daniel Borkmann 提交于
      zatimend has reported that in his environment (3.16/gcc4.8.3/corei7)
      memset() calls which clear out sensitive data in extract_{buf,entropy,
      entropy_user}() in random driver are being optimized away by gcc.
      
      Add a helper memzero_explicit() (similarly as explicit_bzero() variants)
      that can be used in such cases where a variable with sensitive data is
      being cleared out in the end. Other use cases might also be in crypto
      code. [ I have put this into lib/string.c though, as it's always built-in
      and doesn't need any dependencies then. ]
      
      Fixes kernel bugzilla: 82041
      
      Reported-by: zatimend@hotmail.co.uk
      Signed-off-by: NDaniel Borkmann <dborkman@redhat.com>
      Acked-by: NHannes Frederic Sowa <hannes@stressinduktion.org>
      Cc: Alexey Dobriyan <adobriyan@gmail.com>
      Signed-off-by: NTheodore Ts'o <tytso@mit.edu>
      Cc: stable@vger.kernel.org
      d4c5efdb
  9. 16 10月, 2014 4 次提交
  10. 15 10月, 2014 6 次提交