1. 27 1月, 2009 4 次提交
  2. 22 1月, 2009 2 次提交
  3. 21 1月, 2009 2 次提交
    • J
      klist.c: bit 0 in pointer can't be used as flag · c0e69a5b
      Jesper Nilsson 提交于
      The commit a1ed5b0c
      (klist: don't iterate over deleted entries) introduces use of the
      low bit in a pointer to indicate if the knode is dead or not,
      assuming that this bit is always free.
      
      This is not true for all architectures, CRIS for example may align data
      on byte borders.
      
      The result is a bunch of warnings on bootup, devices not being
      added correctly etc, reported by Hinko Kocevar <hinko.kocevar@cetrtapot.si>:
      
      ------------[ cut here ]------------
      WARNING: at lib/klist.c:62 ()
      Modules linked in:
      
      Stack from c1fe1cf0:
             c01cc7f4 c1fe1d11 c000eb4e c000e4de 00000000 00000000 c1f4f78f c1f50c2d
             c01d008c c1fdd1a0 c1fdd1a0 c1fe1d38 c0192954 c1fe0000 00000000 c1fe1dc0
             00000002 7fffffff c1fe1da8 c0192d50 c1fe1dc0 00000002 7fffffff c1ff9fcc
      Call Trace: [<c000eb4e>] [<c000e4de>] [<c0192954>] [<c0192d50>] [<c001d49e>] [<c000b688>] [<c0192a3c>]
             [<c000b63e>] [<c000b63e>] [<c001a542>] [<c00b55b0>] [<c00411c0>] [<c00b559c>] [<c01918e6>] [<c0191988>]
             [<c01919d0>] [<c00cd9c8>] [<c00cdd6a>] [<c0034178>] [<c000409a>] [<c0015576>] [<c0029130>] [<c0029078>]
             [<c0029170>] [<c0012336>] [<c00b4076>] [<c00b4770>] [<c006d6e4>] [<c006d974>] [<c006dca0>] [<c0028d6c>]
             [<c0028e12>] [<c0006424>] <4>---[ end trace 4eaa2a86a8e2da22 ]---
      ------------[ cut here ]------------
      Repeat ad nauseam.
      
      Wed, Jan 14, 2009 at 12:11:32AM +0100, Bastien ROUCARIES wrote:
      > Perhaps using a pointerhackalign trick on this structure where
      > #define pointerhackalign(x) __attribute__ ((aligned (x)))
      > and declare
      > struct klist_node {
      > ...
      > }  pointerhackalign(2);
      >
      > Because  __attribute__ ((aligned (x))) could only increase alignment
      > it will safe to do that and serve as documentation purpose :)
      
      That works, but we need to do it not for the struct klist_node,
      but for the struct we insert into the void * in klist_node,
      which is struct klist.
      
      Reported-by: Hinko Kocevar <hinko.kocevar@cetrtapot.si
      Cc: Bastien ROUCARIES <roucaries.bastien@gmail.com>
      Signed-off-by: NJesper Nilsson <jesper.nilsson@axis.com>
      Cc: stable <stable@kernel.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      c0e69a5b
    • I
      debugfs: introduce stub for debugfs_create_size_t() when DEBUG_FS=n · 8adb711f
      Inaky Perez-Gonzalez 提交于
      Toralf Förster <toralf.foerster@gmx.de> reported a build failure in
      the WiMAX stack when CONFIG_DEBUG_FS=n
      
      http://linuxwimax.org/pipermail/wimax/2009-January/000449.html
      
      This is due to debugfs_create_size_t() missing an stub that returns
      -ENODEV when the DEBUGFS subsystem is not configured in (like the rest
      of the debugfs API).
      
      This patch adds said stub.
      Reported-by: NToralf Förster <toralf.foerster@gmx.de>
      Signed-off-by: NInaky Perez-Gonzalez <inaky@linux.intel.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      8adb711f
  4. 20 1月, 2009 2 次提交
  5. 17 1月, 2009 2 次提交
    • R
      PCI PM: Restore standard config registers of all devices early · aa8c6c93
      Rafael J. Wysocki 提交于
      There is a problem in our handling of suspend-resume of PCI devices that
      many of them have their standard config registers restored with
      interrupts enabled and they are put into the full power state with
      interrupts enabled as well.  This may lead to the following scenario:
        * an interrupt vector is shared between two or more devices
        * one device is resumed earlier and generates an interrupt
        * the interrupt handler of another device tries to handle it and
          attempts to access the device the config space of which hasn't been
          restored yet and/or which still is in a low power state
        * the system crashes as a result
      
      To prevent this from happening we should restore the standard
      configuration registers of all devices with interrupts disabled and we
      should put them into the D0 power state right after that.
      Unfortunately, this cannot be done using the existing
      pci_set_power_state(), because it can sleep.  Also, to do it we have to
      make sure that the config spaces of all devices were actually saved
      during suspend.
      Signed-off-by: NRafael J. Wysocki <rjw@sisk.pl>
      Acked-by: NLinus Torvalds <torvalds@linux-foundation.org>
      Signed-off-by: NJesse Barnes <jbarnes@virtuousgeek.org>
      aa8c6c93
    • J
      quota: Improve locking · cc33412f
      Jan Kara 提交于
      We implement dqget() and dqput() that need neither dqonoff_mutex nor dqptr_sem.
      Then move dqget() and dqput() calls so that they are not called from under
      dqptr_sem. This is important because filesystem callbacks aren't called from
      under dqptr_sem which used to cause *lots* of problems with lock ranking
      (and with OCFS2 they became close to unsolvable).
      
      The patch also removes two functions which were introduced solely because OCFS2
      needed them to cope with the old locking scheme. As time showed, they were not
      enough for OCFS2 anyway and it would be unnecessary work to adapt them to the
      new locking scheme in which they aren't needed.  As a result OCFS2 needs the
      following patch to compile properly with quotas.  Sorry to any bisecters which
      hit this in advance.
      Signed-off-by: NJan Kara <jack@suse.cz>
      cc33412f
  6. 16 1月, 2009 7 次提交
  7. 15 1月, 2009 4 次提交
    • B
      net: Add init_dummy_netdev() and fix EMAC driver using it · 937f1ba5
      Benjamin Herrenschmidt 提交于
      This adds an init_dummy_netdev() function that gets a network device
      structure (allocation and lifetime entirely under caller's control) and
      initialize the minimum amount of fields so it can be used to schedule
      NAPI polls without registering a full blown interface. This is to be
      used by drivers that need to tie several hardware interfaces to a single
      NAPI poll scheduler due to HW limitations.
      
      It also updates the ibm_newemac driver to use that, this fixing the
      oops on 2.6.29 due to passing NULL as "dev" to netif_napi_add()
      
      Symbol is exported GPL only a I don't think we want binary drivers doing
      that sort of acrobatics (if we want them at all).
      Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      Tested-by: NGeert Uytterhoeven <Geert.Uytterhoeven@sonycom.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      937f1ba5
    • H
      byteorder: make swab.h include asm/swab.h like a regular header · 74d96f01
      Harvey Harrison 提交于
      Add swab.h to kbuild.asm and remove the individual entries from
      each arch, mark as unifdef as some arches have some kernel-only
      bits inside.
      Signed-off-by: NHarvey Harrison <harvey.harrison@gmail.com>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      74d96f01
    • B
      IDE: fix sparse signed-ness errors with host->host_busy · e720b9e4
      Ben Dooks 提交于
      The host_busy field in struct ide_host defaults to a
      signed-long, where most arch's test_and_set_bit_*
      macros use an unsigned long.
      
      Change to using an unsigned long, which on ARM removes
      the following sparse errors:
      
      drivers/ide/ide-io.c:681:8: warning: incorrect type in argument 2 (different signedness)
      drivers/ide/ide-io.c:681:8:    expected unsigned long volatile *p
      drivers/ide/ide-io.c:681:8:    got long volatile *<noident>
      drivers/ide/ide-io.c:681:8: warning: incorrect type in argument 2 (different signedness)
      drivers/ide/ide-io.c:681:8:    expected unsigned long volatile *p
      drivers/ide/ide-io.c:681:8:    got long volatile *<noident>
      drivers/ide/ide-io.c:695:3: warning: incorrect type in argument 2 (different signedness)
      drivers/ide/ide-io.c:695:3:    expected unsigned long volatile *p
      drivers/ide/ide-io.c:695:3:    got long volatile *<noident>
      drivers/ide/ide-io.c:695:3: warning: incorrect type in argument 2 (different signedness)
      drivers/ide/ide-io.c:695:3:    expected unsigned long volatile *p
      drivers/ide/ide-io.c:695:3:    got long volatile *<noident>
      drivers/ide/ide-io.c:695:3: warning: incorrect type in argument 2 (different signedness)
      drivers/ide/ide-io.c:695:3:    expected unsigned long volatile *p
      drivers/ide/ide-io.c:695:3:    got long volatile *<noident>
      drivers/ide/ide-io.c:695:3: warning: incorrect type in argument 2 (different signedness)
      drivers/ide/ide-io.c:695:3:    expected unsigned long volatile *p
      drivers/ide/ide-io.c:695:3:    got long volatile *<noident>
      drivers/ide/ide-io.c:695:3: warning: incorrect type in argument 2 (different signedness)
      drivers/ide/ide-io.c:695:3:    expected unsigned long volatile *p
      drivers/ide/ide-io.c:695:3:    got long volatile *<noident>
      drivers/ide/ide-io.c:695:3: warning: incorrect type in argument 2 (different signedness)
      drivers/ide/ide-io.c:695:3:    expected unsigned long volatile *p
      drivers/ide/ide-io.c:695:3:    got long volatile *<noident>
      drivers/ide/ide-io.c:695:3: warning: incorrect type in argument 2 (different signedness)
      drivers/ide/ide-io.c:695:3:    expected unsigned long volatile *p
      drivers/ide/ide-io.c:695:3:    got long volatile *<noident>
      drivers/ide/ide-io.c:695:3: warning: incorrect type in argument 2 (different signedness)
      drivers/ide/ide-io.c:695:3:    expected unsigned long volatile *p
      drivers/ide/ide-io.c:695:3:    got long volatile *<noident>
      Signed-off-by: NBen Dooks <ben-linux@fluff.org>
      Signed-off-by: NBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      e720b9e4
    • B
      it821x: Add ultra_mask quirk for Vortex86SX · b94b898f
      Brandon Philips 提交于
      On Vortex86SX with IDE controller revision 0x11 ultra DMA must be
      disabled. This patch was tested by DMP and seems to work.
      
      It is a cleaned up version of their older Kernel patch: 
       http://www.dmp.com.tw/tech/vortex86sx/patch-2.6.24-DMP.gzTested-by: NShawn Lin <shawn@dmp.com.tw>
      Signed-off-by: NBrandon Philips <bphilips@suse.de>
      Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
      Signed-off-by: NBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      b94b898f
  8. 14 1月, 2009 9 次提交
  9. 13 1月, 2009 3 次提交
  10. 12 1月, 2009 2 次提交
    • P
      locking, hpet: annotate false positive warning · 6d612b0f
      Peter Zijlstra 提交于
      Alexander Beregalov reported that this warning is caused by the HPET code:
      
      > hpet0: at MMIO 0xfed00000, IRQs 2, 8, 0
      > hpet0: 3 comparators, 64-bit 14.318180 MHz counter
      > ODEBUG: object is on stack, but not annotated
      > ------------[ cut here ]------------
      > WARNING: at lib/debugobjects.c:251 __debug_object_init+0x2a4/0x352()
      
      > Bisected down to 26afe5f2
      > (x86: HPET_MSI Initialise per-cpu HPET timers)
      
      The commit is fine - but the on-stack workqueue entry needs annotation.
      Reported-and-bisected-by: NAlexander Beregalov <a.beregalov@gmail.com>
      Signed-off-by: NPeter Zijlstra <a.p.zijlstra@chello.nl>
      Tested-by: NAlexander Beregalov <a.beregalov@gmail.com>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      6d612b0f
    • M
      BUGFIX: used NULL pointer at ioctl(sk,IMGETDEVINFO,&devinfo) when devinfo.id not registered · 57de16e6
      Martin Bachem 提交于
      daxtar example # modprobe hfcsusb
      daxtar example # modprobe mISDN_l1loop
      daxtar example # ./misdnportinfo
      Found 3 devices
              id:             0
              Dprotocols:     00000006
              Bprotocols:     0000000e
              protocol:       0
              nrbchan:        2
              name:           HFC-S_USB.1
              id:             1
              Dprotocols:     00000006
              Bprotocols:     0000000e
              protocol:       0
              nrbchan:        2
              name:           mISDN_l1loop.1
              id:             2
              Dprotocols:     00000006
              Bprotocols:     0000000e
              protocol:       0
              nrbchan:        2
              name:           mISDN_l1loop.2
      daxtar example # rmmod hfcsusb
      daxtar example # ./misdnportinfo
      Found 2 devices
      *Segmentation* *fault*
      
      dmesg:
      
      [ 9914.939718] BUG: unable to handle kernel NULL pointer dereference at 000000d4
      [ 9914.939721] IP: [<f8f9f2dd>] :mISDN_core:get_mdevice+0x19/0x22
      [ 9914.939729] *pde = 00000000
      [ 9914.939732] Oops: 0000 [#14] PREEMPT SMP
      [ 9914.939734] Modules linked in: mISDN_l1loop mISDN_core vmnet vmblock vmci vmmon coretemp w83627ehf hwmon_vid rfcomm l2cap blue
      tooth usbhid snd_usb_audio snd_usb_lib snd_rawmidi snd_hwdep fuse nvidia(P) uhci_hcd i2c_i801 ehci_hcd snd_hda_intel atl1 usbcore i2c_core parport_seria
      l [last unloaded: hfcsusb]
      [ 9914.939751] Pid: 29618, comm: misdnportinfo Tainted: P      D   (2.6.27.3 #5)
      [ 9914.939753] EIP: 0060:[<f8f9f2dd>] EFLAGS: 00210246 CPU: 0
      [ 9914.939758] EIP is at get_mdevice+0x19/0x22 [mISDN_core]
      [ 9914.939760] EAX: 00000000 EBX: f8fa791c ECX: f6afaa58 EDX: f7960cf4
      [ 9914.939762] ESI: 80044944 EDI: bfc2e62c EBP: bfc2e62c ESP: f5adbef4
      [ 9914.939763]  DS: 007b ES: 007b FS: 00d8 GS: 0033 SS: 0068
      [ 9914.939765] Process misdnportinfo (pid: 29618, ti=f5ada000 task=f6bec430 task.ti=f5ada000)
      [ 9914.939767] Stack: f8f9f4e0 00000000 f8f9f867 bfc2e62c 0000000a c02461e8 00200246 c042dde8
      [ 9914.939771]        00000003 c042dde4 00000000 00000001 00200082 c0114775 00000000 00000000
      [ 9914.939775]        00000003 f7088010 00200282 f8fa791c 80044944 bfc2e62c bfc2e62c c02f6615
      [ 9914.939780] Call Trace:
      [ 9914.939782]  [<f8f9f4e0>] _get_mdevice+0x0/0x18 [mISDN_core]
      [ 9914.939789]  [<f8f9f867>] base_sock_ioctl+0x7a/0x129 [mISDN_core]
      [ 9914.939789]  [<c02461e8>] opost+0x171/0x182
      [ 9914.939789]  [<c0114775>] __wake_up+0x29/0x39
      [ 9914.939789]  [<c02f6615>] sock_ioctl+0x1b5/0x1d9
      [ 9914.939789]  [<c02f6460>] sock_ioctl+0x0/0x1d9
      [ 9914.939789]  [<c016794c>] vfs_ioctl+0x1c/0x5d
      [ 9914.939789]  [<c0167bcb>] do_vfs_ioctl+0x23e/0x24e
      [ 9914.939789]  [<c0167c07>] sys_ioctl+0x2c/0x45
      [ 9914.939789]  [<c0102cbd>] sysenter_do_call+0x12/0x21
      [ 9914.939789]  [<c0350000>] pci_fixup_i450gx+0x4e/0x56
      [ 9914.939789]  =======================
      [ 9914.939789] Code: 00 68 02 f0 f9 f8 e8 ae b4 2c c7 8b 44 24 04 5a 59 c3 83 ec 04 31 d2 89 04 24 89 e1 b8 ac df fa f8 68 e0 f4
      f9 f8 e8 4a b5 2c c7 <8b> 80 d4 00 00 00 5a 59 c3 53 89 cb 8d 90 9c 00 00 00 89 c8 e8
      [ 9914.939789] EIP: [<f8f9f2dd>] get_mdevice+0x19/0x22 [mISDN_core] SS:ESP 0068:f5adbef4
      [ 9914.939858] ---[ end trace 50e18a715b019424 ]---
      Signed-off-by: NMartin Bachem <m.bachem@gmx.de>
      Signed-off-by: NKarsten Keil <kkeil@suse.de>
      57de16e6
  11. 11 1月, 2009 3 次提交