1. 11 12月, 2006 1 次提交
    • R
      [PATCH] ipc-procfs-sysctl mixups · d53ef07a
      Randy Dunlap 提交于
      When CONFIG_PROC_FS=n and CONFIG_PROC_SYSCTL=n but CONFIG_SYSVIPC=y, we get
      this build error:
      
      kernel/built-in.o:(.data+0xc38): undefined reference to `proc_ipc_doulongvec_minmax'
      kernel/built-in.o:(.data+0xc88): undefined reference to `proc_ipc_doulongvec_minmax'
      kernel/built-in.o:(.data+0xcd8): undefined reference to `proc_ipc_dointvec'
      kernel/built-in.o:(.data+0xd28): undefined reference to `proc_ipc_dointvec'
      kernel/built-in.o:(.data+0xd78): undefined reference to `proc_ipc_dointvec'
      kernel/built-in.o:(.data+0xdc8): undefined reference to `proc_ipc_dointvec'
      kernel/built-in.o:(.data+0xe18): undefined reference to `proc_ipc_dointvec'
      make: *** [vmlinux] Error 1
      Signed-off-by: NRandy Dunlap <randy.dunlap@oracle.com>
      Acked-by: NEric Biederman <ebiederm@xmission.com>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      d53ef07a
  2. 10 12月, 2006 1 次提交
    • D
      [PATCH] WorkStruct: Use direct assignment rather than cmpxchg() · 4594bf15
      David Howells 提交于
      Use direct assignment rather than cmpxchg() as the latter is unavailable
      and unimplementable on some platforms and is actually unnecessary.
      
      The use of cmpxchg() was to guard against two possibilities, neither of
      which can actually occur:
      
       (1) The pending flag may have been unset or may be cleared.  However, given
           where it's called, the pending flag is _always_ set.  I don't think it
           can be unset whilst we're in set_wq_data().
      
           Once the work is enqueued to be actually run, the only way off the queue
           is for it to be actually run.
      
           If it's a delayed work item, then the bit can't be cleared by the timer
           because we haven't started the timer yet.  Also, the pending bit can't be
           cleared by cancelling the delayed work _until_ the work item has had its
           timer started.
      
       (2) The workqueue pointer might change.  This can only happen in two cases:
      
           (a) The work item has just been queued to actually run, and so we're
               protected by the appropriate workqueue spinlock.
      
           (b) A delayed work item is being queued, and so the timer hasn't been
           	 started yet, and so no one else knows about the work item or can
           	 access it (the pending bit protects us).
      
           Besides, set_wq_data() _sets_ the workqueue pointer unconditionally, so
           it can be assigned instead.
      
      So, replacing the set_wq_data() with a straight assignment would be okay
      in most cases.
      
      The problem is where we end up tangling with test_and_set_bit() emulated
      using spinlocks, and even then it's not a problem _provided_
      test_and_set_bit() doesn't attempt to modify the word if the bit was
      set.
      
      If that's a problem, then a bitops-proofed assignment will be required -
      equivalent to atomic_set() vs other atomic_xxx() ops.
      Signed-off-by: NDavid Howells <dhowells@redhat.com>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      4594bf15
  3. 09 12月, 2006 23 次提交
  4. 08 12月, 2006 15 次提交