1. 28 Oct, 2008 7 commits
    • Frank Munzert's avatar
      [S390] tape: disable interrupts in tape_open and tape_release · b3c21e49
      Frank Munzert authored
      Get tape device lock with interrupts disabled. Otherwise lockdep will issue a
      warning similar to:
      
      =================================
      [ INFO: inconsistent lock state ]
      2.6.27 #1
      ---------------------------------
      inconsistent {in-hardirq-W} -> {hardirq-on-W} usage.
      vol_id/2903 [HC0[0]:SC0[0]:HE1:SE1] takes:
       (sch->lock){++..}, at: [<000003e00004c7a2>] tape_open+0x42/0x1a4 [tape]
      {in-hardirq-W} state was registered at:
        [<000000000007ce5c>] __lock_acquire+0x894/0xa74
        [<000000000007d0ce>] lock_acquire+0x92/0xb8
        [<0000000000345154>] _spin_lock+0x5c/0x9c
        [<0000000000202264>] do_IRQ+0x124/0x1f0
        [<0000000000026610>] io_return+0x0/0x8
      
      irq event stamp: 847
      hardirqs last  enabled at (847): [<000000000007aca6>] trace_hardirqs_on+0x2a/0x38
      hardirqs last disabled at (846): [<0000000000076ca2>] trace_hardirqs_off+0x2a/0x38
      softirqs last  enabled at (0): [<000000000004909e>] copy_process+0x43e/0x11f4
      softirqs last disabled at (0): [<0000000000000000>] 0x0
      
      other info that might help us debug this:
      1 lock held by vol_id/2903:
       #0:  (&bdev->bd_mutex){--..}, at: [<000000000010e0f4>] do_open+0x78/0x358
      
      stack backtrace:
      CPU: 1 Not tainted 2.6.27 #1},
      Process vol_id (pid: 2903, task: 000000003d4c0000, ksp: 000000003d4e3b10)
      0400000000000000 000000003d4e3830 0000000000000002 0000000000000000
             000000003d4e38d0 000000003d4e3848 000000003d4e3848 00000000000168a8
             0000000000000000 000000003d4e3b10 0000000000000000 0000000000000000
             000000003d4e3830 000000000000000c 000000003d4e3830 000000003d4e38a0
             000000000034aa98 00000000000168a8 000000003d4e3830 000000003d4e3880
      Call Trace:
      ([<000000000001681c>] show_trace+0x138/0x158)
       [<0000000000016902>] show_stack+0xc6/0xf8
       [<00000000000170d4>] dump_stack+0xb0/0xc0
       [<0000000000078810>] print_usage_bug+0x1e8/0x228
       [<000000000007a71c>] mark_lock+0xb14/0xd24
       [<000000000007cd5a>] __lock_acquire+0x792/0xa74
       [<000000000007d0ce>] lock_acquire+0x92/0xb8
       [<0000000000345154>] _spin_lock+0x5c/0x9c
       [<000003e00004c7a2>] tape_open+0x42/0x1a4 [tape]
       [<000003e00005185c>] tapeblock_open+0x98/0xd0 [tape]
      Signed-off-by: default avatarFrank Munzert <munzert@de.ibm.com>
      Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
      b3c21e49
    • Roel Kluin's avatar
      [S390] appldata: unsigned ops->size cannot be negative · 13f8b7c5
      Roel Kluin authored
      unsigned ops->size cannot be negative
      Signed-off-by: default avatarRoel Kluin <roel.kluin@gmail.com>
      Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
      13f8b7c5
    • Frank Munzert's avatar
      [S390] tape block: complete request with correct locking · 7a4a1ccd
      Frank Munzert authored
      __blk_end_request must be called with request queue lock held. We need to use
      blk_end_request rather than  __blk_end_request.
      Signed-off-by: default avatarFrank Munzert <munzert@de.ibm.com>
      Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
      7a4a1ccd
    • Heiko Carstens's avatar
      [S390] Fix sysdev class file creation. · da5aae70
      Heiko Carstens authored
      Use sysdev_class_create_file() to create create sysdev class attributes
      instead of sysfs_create_file(). Using sysfs_create_file() wasn't a very
      good idea since the show and store functions have a different amount of
      parameters for sysfs files and sysdev class files.
      In particular the pointer to the buffer is the last argument and
      therefore accesses to random memory regions happened.
      Still worked surprisingly well until we got a kernel panic.
      
      Cc: stable@kernel.org
      Signed-off-by: default avatarHeiko Carstens <heiko.carstens@de.ibm.com>
      Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
      da5aae70
    • Christian Borntraeger's avatar
      [S390] pgtables: Fix race in enable_sie vs. page table ops · 250cf776
      Christian Borntraeger authored
      The current enable_sie code sets the mm->context.pgstes bit to tell
      dup_mm that the new mm should have extended page tables. This bit is also
      used by the s390 specific page table primitives to decide about the page
      table layout - which means context.pgstes has two meanings. This can cause
      any kind of bugs. For example  - e.g. shrink_zone can call
      ptep_clear_flush_young while enable_sie is running. ptep_clear_flush_young
      will test for context.pgstes. Since enable_sie changed that value of the old
      struct mm without changing the page table layout ptep_clear_flush_young will
      do the wrong thing.
      The solution is to split pgstes into two bits
      - one for the allocation
      - one for the current state
      Signed-off-by: default avatarChristian Borntraeger <borntraeger@de.ibm.com>
      Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
      250cf776
    • Jan Glauber's avatar
      [S390] qdio: remove incorrect memset · 2c780914
      Jan Glauber authored
      Remove the memset since zeroing the string is not needed and use
      snprintf instead of sprintf.
      Signed-off-by: default avatarJan Glauber <jang@linux.vnet.ibm.com>
      Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
      2c780914
    • Jan Glauber's avatar
      [S390] qdio: prevent double qdio shutdown in case of I/O errors · 7c045aa2
      Jan Glauber authored
      In case of I/O errors on a qdio subchannel qdio_shutdown may be
      called twice by the qdio driver and by zfcp. Remove the
      superfluous shutdown from qdio and let the upper layer driver
      handle the error condition.
      Signed-off-by: default avatarJan Glauber <jang@linux.vnet.ibm.com>
      Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
      7c045aa2
  2. 27 Oct, 2008 33 commits