1. 20 4月, 2010 14 次提交
    • D
      i2c-stu300: off by one issue · 42df64b1
      Dan Carpenter 提交于
      If we don't find the correct rate, we want to end the loop with "i"
      pointing to the last element in the array.
      Signed-off-by: NDan Carpenter <error27@gmail.com>
      Signed-off-by: NBen Dooks <ben-linux@fluff.org>
      42df64b1
    • K
      i2c-pnx: Add stop conditions for end of transfer · 28ad3321
      Kevin Wells 提交于
      Add a stop condition bit flag to the last byte in the transfer.
      This will generate an extra clock to handle the stop condition
      and prevent devices from staying in an ACK'd state.
      Signed-off-by: NKevin Wells <wellsk40@gmail.com>
      Signed-off-by: NBen Dooks <ben-linux@fluff.org>
      28ad3321
    • K
      i2c-pnx: Limit maximum divider to 1023 · be80dbaa
      Kevin Wells 提交于
      Limit maximum divider to 0x3ff to divider computations. On high I2C
      parent clock rates, the divider can exceed 0x3ff. This will help
      prevent some very odd clock rates.
      Signed-off-by: NKevin Wells <wellsk40@gmail.com>
      Signed-off-by: NBen Dooks <ben-linux@fluff.org>
      be80dbaa
    • M
      i2c-omap: fix OOPS in omap_i2c_unidle() during probe · 7c6bd201
      Mika Westerberg 提交于
      Commit d84d3ea3 added register shift to allow
      also 16-bit register access. However, omap_i2c_unidle() is called before these
      are set which causes the following OOPS:
      
          Unhandled fault: alignment exception (0x801) at 0xfa070009
          Internal error: : 801 [#1]
          last sysfs file:
          Modules linked in:
          CPU: 0    Not tainted  (2.6.34-rc2-00052-gae6be51e #3)
          PC is at omap_i2c_unidle+0x44/0x138
          LR is at trace_hardirqs_on_caller+0x158/0x18c
          pc : [<c01cd2c4>]    lr : [<c00743f8>]    psr: 20000013
          sp : cfc2bf10  ip : 00000009  fp : 00000000
          r10: 00000000  r9 : 00000000  r8 : c0378560
          r7 : c0378b88  r6 : c0378558  r5 : cfcadc00  r4 : cfcadc00
          r3 : 00000009  r2 : fa070000  r1 : 00000000  r0 : 00000000
          Flags: nzCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment kernel
          Control: 10c5387f  Table: 80004019  DAC: 00000017
          Process swapper (pid: 1, stack limit = 0xcfc2a2e8)
          Stack: (0xcfc2bf10 to 0xcfc2c000)
          bf00:                                     c0372cf8 c027225c 00000000 c0a69678
          bf20: cfc3e508 c0500898 c0378560 c0378560 c0500898 cfcac8c0 c04fc280 c017d4f4
          bf40: c0378560 c017c63c c0378560 c0378594 c0500898 cfcac8c0 c04fc280 c017c754
          bf60: 00000000 c017c6f4 c0500898 c017beac cfc16a5c cfc3fd94 c0023448 c0500898
          bf80: c0500898 c017b7d4 c032dc7f 00000093 cfc28d40 c0023448 00000000 c0500898
          bfa0: 00000000 00000000 00000000 c017ca48 c0023448 00000000 c001d274 00000000
          bfc0: 00000000 c002b344 00000031 00000000 00000000 00000192 00000000 c0023448
          bfe0: 00000000 00000000 00000000 c0008578 00000000 c002c304 ffdfffff ffffffff
          [<c01cd2c4>] (omap_i2c_unidle+0x44/0x138) from [<c027225c>] (omap_i2c_probe+0x1a4/0x398)
          [<c027225c>] (omap_i2c_probe+0x1a4/0x398) from [<c017d4f4>] (platform_drv_probe+0x18/0x1c)
          [<c017d4f4>] (platform_drv_probe+0x18/0x1c) from [<c017c63c>] (driver_probe_device+0xc0/0x178)
          [<c017c63c>] (driver_probe_device+0xc0/0x178) from [<c017c754>] (__driver_attach+0x60/0x84)
          [<c017c754>] (__driver_attach+0x60/0x84) from [<c017beac>] (bus_for_each_dev+0x44/0x74)
          [<c017beac>] (bus_for_each_dev+0x44/0x74) from [<c017b7d4>] (bus_add_driver+0x9c/0x218)
          [<c017b7d4>] (bus_add_driver+0x9c/0x218) from [<c017ca48>] (driver_register+0xa8/0x130)
          [<c017ca48>] (driver_register+0xa8/0x130) from [<c002b344>] (do_one_initcall+0x5c/0x1b8)
          [<c002b344>] (do_one_initcall+0x5c/0x1b8) from [<c0008578>] (kernel_init+0x90/0x144)
          [<c0008578>] (kernel_init+0x90/0x144) from [<c002c304>] (kernel_thread_exit+0x0/0x8)
          Code: e5942004 e3a0c009 e1a0331c e3a01000 (e18210b3)
          ---[ end trace 1b75b31a2719ed1c ]---
      
      This patch moves register shift setting before any register accesses are done.
      Signed-off-by: NMika Westerberg <ext-mika.1.westerberg@nokia.com>
      Cc: Cory Maccarrone <darkstar6262@gmail.com>
      Signed-off-by: NBen Dooks <ben-linux@fluff.org>
      7c6bd201
    • A
      i2c-imx: fix error handling · da9c99fc
      Arnaud Patard 提交于
      - Return -ETIMEDOUT on bus busy error
      - Fix timeout test "time_after(jiffies, orig_jiffies + HZ / 1000)" :
        By default, HZ=100 on arm. This means that this test has no chances to
        work and may result in a dead loop. Set timeout to 500ms.
      - Don't try to send a new message if we failed to transmit
        previous one. This was preventing to recover from error on my system
      Signed-off-by: NArnaud Patard <apatard@mandriva.com>
      Signed-off-by: NBen Dooks <ben-linux@fluff.org>
      da9c99fc
    • L
      Linux 2.6.34-rc5 · 01bf0b64
      Linus Torvalds 提交于
      01bf0b64
    • R
      rmap: add exclusively owned pages to the newest anon_vma · e8a03feb
      Rik van Riel 提交于
      The recent anon_vma fixes cause many anonymous pages to end up
      in the parent process anon_vma, even when the page is exclusively
      owned by the current process.
      
      Adding exclusively owned anonymous pages to the top anon_vma
      reduces rmap scanning overhead, especially in workloads with
      forking servers.
      
      This patch adds a parameter to __page_set_anon_rmap that can
      be used to indicate whether or not the added page is exclusively
      owned by the current process.
      
      Pages added through page_add_new_anon_rmap are exclusively
      owned by the current process, and can be added to the top
      anon_vma.
      
      Pages added through page_add_anon_rmap can be either shared
      or exclusively owned, so we do the conservative thing and
      add it to the oldest anon_vma.
      
      A next step would be to add the exclusive parameter to
      page_add_anon_rmap, to be used from functions where we do
      know for sure whether a page is exclusively owned.
      Signed-off-by: NRik van Riel <riel@redhat.com>
      Reviewed-by: NJohannes Weiner <hannes@cmpxchg.org>
      Lightly-tested-by: NBorislav Petkov <bp@alien8.de>
      Reviewed-by: NMinchan Kim <minchan.kim@gmail.com>
      [ Edited to look nicer  - Linus ]
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      e8a03feb
    • L
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ecryptfs/ecryptfs-2.6 · 9b030e20
      Linus Torvalds 提交于
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ecryptfs/ecryptfs-2.6:
        eCryptfs: Turn lower lookup error messages into debug messages
        eCryptfs: Copy lower directory inode times and size on link
        ecryptfs: fix use with tmpfs by removing d_drop from ecryptfs_destroy_inode
        ecryptfs: fix error code for missing xattrs in lower fs
        eCryptfs: Decrypt symlink target for stat size
        eCryptfs: Strip metadata in xattr flag in encrypted view
        eCryptfs: Clear buffer before reading in metadata xattr
        eCryptfs: Rename ecryptfs_crypt_stat.num_header_bytes_at_front
        eCryptfs: Fix metadata in xattr feature regression
      9b030e20
    • T
      eCryptfs: Turn lower lookup error messages into debug messages · 9f37622f
      Tyler Hicks 提交于
      Vaugue warnings about ENAMETOOLONG errors when looking up an encrypted
      file name have caused many users to become concerned about their data.
      Since this is a rather harmless condition, I'm moving this warning to
      only be printed when the ecryptfs_verbosity module param is 1.
      Signed-off-by: NTyler Hicks <tyhicks@linux.vnet.ibm.com>
      9f37622f
    • T
      eCryptfs: Copy lower directory inode times and size on link · 3a8380c0
      Tyler Hicks 提交于
      The timestamps and size of a lower inode involved in a link() call was
      being copied to the upper parent inode.  Instead, we should be
      copying lower parent inode's timestamps and size to the upper parent
      inode.  I discovered this bug using the POSIX test suite at Tuxera.
      Signed-off-by: NTyler Hicks <tyhicks@linux.vnet.ibm.com>
      3a8380c0
    • J
      ecryptfs: fix use with tmpfs by removing d_drop from ecryptfs_destroy_inode · 133b8f9d
      Jeff Mahoney 提交于
      Since tmpfs has no persistent storage, it pins all its dentries in memory
      so they have d_count=1 when other file systems would have d_count=0.
      ->lookup is only used to create new dentries. If the caller doesn't
      instantiate it, it's freed immediately at dput(). ->readdir reads
      directly from the dcache and depends on the dentries being hashed.
      
      When an ecryptfs mount is mounted, it associates the lower file and dentry
      with the ecryptfs files as they're accessed. When it's umounted and
      destroys all the in-memory ecryptfs inodes, it fput's the lower_files and
      d_drop's the lower_dentries. Commit 4981e081 added this and a d_delete in
      2008 and several months later commit caeeeecf removed the d_delete. I
      believe the d_drop() needs to be removed as well.
      
      The d_drop effectively hides any file that has been accessed via ecryptfs
      from the underlying tmpfs since it depends on it being hashed for it to
      be accessible. I've removed the d_drop on my development node and see no
      ill effects with basic testing on both tmpfs and persistent storage.
      
      As a side effect, after ecryptfs d_drops the dentries on tmpfs, tmpfs
      BUGs on umount. This is due to the dentries being unhashed.
      tmpfs->kill_sb is kill_litter_super which calls d_genocide to drop
      the reference pinning the dentry. It skips unhashed and negative dentries,
      but shrink_dcache_for_umount_subtree doesn't. Since those dentries
      still have an elevated d_count, we get a BUG().
      
      This patch removes the d_drop call and fixes both issues.
      
      This issue was reported at:
      https://bugzilla.novell.com/show_bug.cgi?id=567887Reported-by: NÁrpád Bíró <biroa@demasz.hu>
      Signed-off-by: NJeff Mahoney <jeffm@suse.com>
      Cc: Dustin Kirkland <kirkland@canonical.com>
      Cc: stable@kernel.org
      Signed-off-by: NTyler Hicks <tyhicks@linux.vnet.ibm.com>
      133b8f9d
    • C
      ecryptfs: fix error code for missing xattrs in lower fs · cfce08c6
      Christian Pulvermacher 提交于
      If the lower file system driver has extended attributes disabled,
      ecryptfs' own access functions return -ENOSYS instead of -EOPNOTSUPP.
      This breaks execution of programs in the ecryptfs mount, since the
      kernel expects the latter error when checking for security
      capabilities in xattrs.
      Signed-off-by: NChristian Pulvermacher <pulvermacher@gmx.de>
      Cc: stable@kernel.org
      Signed-off-by: NTyler Hicks <tyhicks@linux.vnet.ibm.com>
      cfce08c6
    • T
      eCryptfs: Decrypt symlink target for stat size · 3a60a168
      Tyler Hicks 提交于
      Create a getattr handler for eCryptfs symlinks that is capable of
      reading the lower target and decrypting its path.  Prior to this patch,
      a stat's st_size field would represent the strlen of the encrypted path,
      while readlink() would return the strlen of the decrypted path.  This
      could lead to confusion in some userspace applications, since the two
      values should be equal.
      
      https://bugs.launchpad.net/bugs/524919Reported-by: NLoïc Minier <loic.minier@canonical.com>
      Cc: stable@kernel.org
      Signed-off-by: NTyler Hicks <tyhicks@linux.vnet.ibm.com>
      3a60a168
    • L
      Fix ISDN/Gigaset build failure · 76e506a7
      Linus Torvalds 提交于
      Commit b91ecb00 ("gigaset: include cleanup cleanup") removed an implicit
      sched.h inclusion that came in via slab.h, and caused various compile
      problems as a result.
      
      This should fix it.
      Reported-by: NIngo Molnar <mingo@elte.hu>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      76e506a7
  2. 19 4月, 2010 15 次提交
  3. 18 4月, 2010 4 次提交
  4. 17 4月, 2010 6 次提交
    • D
      packet : remove init_net restriction · 1c4f0197
      Daniel Lezcano 提交于
      The af_packet protocol is used by Perl to do ioctls as reported by
      Stephane Riviere:
      
      "Net::RawIP relies on SIOCGIFADDR et SIOCGIFHWADDR to get the IP and MAC
      addresses of the network interface."
      
      But in a new network namespace these ioctl fail because it is disabled for
      a namespace different from the init_net_ns.
      
      These two lines should not be there as af_inet and af_packet are
      namespace aware since a long time now. I suppose we forget to remove these
      lines because we sent the af_packet first, before af_inet was supported.
      Signed-off-by: NDaniel Lezcano <daniel.lezcano@free.fr>
      Reported-by: NStephane Riviere <stephane.riviere@regis-dgac.net>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      1c4f0197
    • K
      WAN: flush tx_queue in hdlc_ppp to prevent panic on rmmod hw_driver. · 31f634a6
      Krzysztof Halasa 提交于
      tx_queue is used as a temporary queue when not allowed to queue skb
      directly to the hw device driver (which may sleep). Most paths flush
      it before returning, but ppp_start() currently cannot. Make sure we
      don't leave skbs pointing to a non-existent device.
      
      Thanks to Michael Barkowski for reporting this problem.
      Signed-off-by: NKrzysztof Hałasa <khc@pm.waw.pl>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      31f634a6
    • L
      Merge branch 'bugzilla-15749' into release · bc396692
      Len Brown 提交于
      bc396692
    • A
      ACPI: EC: Limit burst to 64 bits · 2060c445
      Alexey Starikovskiy 提交于
      access_bit_width field is u8 in ACPICA, thus 256 value written to it
      becomes 0, causing divide by zero later.
      
      Proper fix would be to remove access_bit_width at all, just because
      we already have access_byte_width, which is access_bit_width / 8.
      Limit access width to 64 bit for now.
      
      https://bugzilla.kernel.org/show_bug.cgi?id=15749
      fixes regression caused by the fix for:
      https://bugzilla.kernel.org/show_bug.cgi?id=14667Signed-off-by: NAlexey Starikovskiy <astarikovskiy@suse.de>
      Signed-off-by: NLen Brown <len.brown@intel.com>
      2060c445
    • D
      xfs: don't warn on EAGAIN in inode reclaim · f1d486a3
      Dave Chinner 提交于
      Any inode reclaim flush that returns EAGAIN will result in the inode
      reclaim being attempted again later. There is no need to issue a
      warning into the logs about this situation.
      Signed-off-by: NDave Chinner <dchinner@redhat.com>
      Reviewed-by: NAlex Elder <aelder@sgi.com>
      Signed-off-by: NAlex Elder <aelder@sgi.com>
      f1d486a3
    • D
      xfs: ensure that sync updates the log tail correctly · b6f8dd49
      Dave Chinner 提交于
      Updates to the VFS layer removed an extra ->sync_fs call into the
      filesystem during the sync process (from the quota code).
      Unfortunately the sync code was unknowingly relying on this call to
      make sure metadata buffers were flushed via a xfs_buftarg_flush()
      call to move the tail of the log forward in memory before the final
      transactions of the sync process were issued.
      
      As a result, the old code would write a very recent log tail value
      to the log by the end of the sync process, and so a subsequent crash
      would leave nothing for log recovery to do. Hence in qa test 182,
      log recovery only replayed a small handle for inode fsync
      transactions in this case.
      
      However, with the removal of the extra ->sync_fs call, the log tail
      was now not moved forward with the inode fsync transactions near the
      end of the sync procese the first (and only) buftarg flush occurred
      after these transactions went to disk. The result is that log
      recovery now sees a large number of transactions for metadata that
      is already on disk.
      
      This usually isn't a problem, but when the transactions include
      inode chunk allocation, the inode create transactions and all
      subsequent changes are replayed as we cannt rely on what is on disk
      is valid. As a result, if the inode was written and contains
      unlogged changes, the unlogged changes are lost, thereby violating
      sync semantics.
      
      The fix is to always issue a transaction after the buftarg flush
      occurs is the log iѕ not idle or covered. This results in a dummy
      transaction being written that contains the up-to-date log tail
      value, which will be very recent. Indeed, it will be at least as
      recent as the old code would have left on disk, so log recovery
      will behave exactly as it used to in this situation.
      Signed-off-by: NDave Chinner <dchinner@redhat.com>
      Reviewed-by: NChristoph Hellwig <hch@lst.de>
      Signed-off-by: NAlex Elder <aelder@sgi.com>
      b6f8dd49
  5. 16 4月, 2010 1 次提交