1. 07 1月, 2006 6 次提交
    • P
      [PATCH] mm: fix __alloc_pages cpuset ALLOC_* flags · 47f3a867
      Paul Jackson 提交于
      Two changes to the setting of the ALLOC_CPUSET flag in
      mm/page_alloc.c:__alloc_pages()
      
      - A bug fix - the "ignoring mins" case should not be honoring ALLOC_CPUSET.
        This case of all cases, since it is handling a request that will free up
        more memory than is asked for (exiting tasks, e.g.) should be allowed to
        escape cpuset constraints when memory is tight.
      
      - A logic change to make it simpler.  Honor cpusets even on GFP_ATOMIC
        (!wait) requests.  With this, cpuset confinement applies to all requests
        except ALLOC_NO_WATERMARKS, so that in a subsequent cleanup patch, I can
        remove the ALLOC_CPUSET flag entirely.  Since I don't know any real reason
        this logic has to be either way, I am choosing the path of the simplest
        code.
      Signed-off-by: NPaul Jackson <pj@sgi.com>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      47f3a867
    • A
      [PATCH] swsusp: resume_store() retval fix · a576219a
      Andrew Morton 提交于
      - This function returns -EINVAL all the time.  Fix.
      
      - Decruftify it a bit too.
      
      - Writing to it doesn't seem to do what it's suppoed to do.
      
      Cc: Pavel Machek <pavel@ucw.cz>
      Cc: "Rafael J. Wysocki" <rjw@sisk.pl>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      a576219a
    • A
      [PATCH] alpha: dma_map_page() fix · 817c41d7
      Andrew Morton 提交于
      Cc: Ivan Kokshaysky <ink@jurassic.park.msu.ru>
      Cc: Richard Henderson <rth@twiddle.net>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      817c41d7
    • N
      [PATCH] knfsd: fix hash function for IP addresses on 64bit little-endian machines. · 1f1e030b
      NeilBrown 提交于
      The hash.h hash_long function, when used on a 64 bit machine, ignores many
      of the middle-order bits.  (The prime chosen it too bit-sparse).
      
      IP addresses for clients of an NFS server are very likely to differ only in
      the low-order bits.  As addresses are stored in network-byte-order, these
      bits become middle-order bits in a little-endian 64bit 'long', and so do
      not contribute to the hash.  Thus you can have the situation where all
      clients appear on one hash chain.
      
      So, until hash_long is fixed (or maybe forever), us a hash function that
      works well on IP addresses - xor the bytes together.
      
      Thanks to "Iozone" <capps@iozone.org> for identifying this problem.
      
      Cc: "Iozone" <capps@iozone.org>
      Signed-off-by: NNeil Brown <neilb@suse.de>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      1f1e030b
    • H
      [PATCH] nbd: fix TX/RX race condition · 4b2f0260
      Herbert Xu 提交于
      Janos Haar of First NetCenter Bt.  reported numerous crashes involving the
      NBD driver.  With his help, this was tracked down to bogus bio vectors
      which in turn was the result of a race condition between the
      receive/transmit routines in the NBD driver.
      
      The bug manifests itself like this:
      
      CPU0				CPU1
      do_nbd_request
      	add req to queuelist
      	nbd_send_request
      		send req head
      		for each bio
      			kmap
      			send
      				nbd_read_stat
      					nbd_find_request
      					nbd_end_request
      			kunmap
      
      When CPU1 finishes nbd_end_request, the request and all its associated
      bio's are freed.  So when CPU0 calls kunmap whose argument is derived from
      the last bio, it may crash.
      
      Under normal circumstances, the race occurs only on the last bio.  However,
      if an error is encountered on the remote NBD server (such as an incorrect
      magic number in the request), or if there were a bug in the server, it is
      possible for the nbd_end_request to occur any time after the request's
      addition to the queuelist.
      
      The following patch fixes this problem by making sure that requests are not
      added to the queuelist until after they have been completed transmission.
      
      In order for the receiving side to be ready for responses involving
      requests still being transmitted, the patch introduces the concept of the
      active request.
      
      When a response matches the current active request, its processing is
      delayed until after the tranmission has come to a stop.
      
      This has been tested by Janos and it has been successful in curing this
      race condition.
      
      From: Herbert Xu <herbert@gondor.apana.org.au>
      
        Here is an updated patch which removes the active_req wait in
        nbd_clear_queue and the associated memory barrier.
      
        I've also clarified this in the comment.
      Signed-off-by: NHerbert Xu <herbert@gondor.apana.org.au>
      Cc: <djani22@dynamicweb.hu>
      Cc: Paul Clements <Paul.Clements@SteelEye.com>
      Signed-off-by: NHerbert Xu <herbert@gondor.apana.org.au>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      4b2f0260
    • J
      [PATCH] hfsplus oops fix · bd6a59b2
      Joshua Kwan 提交于
      nls_utf8 is available, and the check in hfsplus_fill_super checks the wrong
      pointer for NULLness (it checks the saved nls, not the new one that it
      needs to use.)
      Signed-off-by: NJoshua Kwan <joshk@triplehelix.org>
      Cc: Roman Zippel <zippel@linux-m68k.org>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      bd6a59b2
  2. 06 1月, 2006 34 次提交