1. 26 May, 2009 21 commits
    • Linus Torvalds's avatar
      Merge branch 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/davej/cpufreq · 733be82e
      Linus Torvalds authored
      * 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/davej/cpufreq:
        [CPUFREQ] powernow-k8: determine exact CPU frequency for HW Pstates
        [CPUFREQ] powernow-k8 cleanup msg if BIOS does not export ACPI _PSS cpufreq data
        [CPUFREQ] fix timer teardown in ondemand governor
        [CPUFREQ] fix timer teardown in conservative governor
        [CPUFREQ] remove rwsem lock from CPUFREQ_GOV_STOP call
        [CPUFREQ] powernow-k7 build fix when ACPI=n
        [CPUFREQ] add atom family to p4-clockmod
      733be82e
    • Rusty Russell's avatar
      lguest: fix on Intel when KVM loaded (unhandled trap 13) · 56434622
      Rusty Russell authored
      When KVM is loaded, and hence VT set up, the vmcall instruction in an
      lguest guest causes a #GP, not #UD.
      Signed-off-by: default avatarRusty Russell <rusty@rustcorp.com.au>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      56434622
    • Tetsuo Handa's avatar
      kmod: Release sub_info on cred allocation failure. · ab2b7eba
      Tetsuo Handa authored
      call_usermodehelper_setup() forgot to kfree(sub_info)
      when prepare_usermodehelper_creds() failed.
      Signed-off-by: default avatarTetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
      Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      ab2b7eba
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 · d4a76f8a
      Linus Torvalds authored
      * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6: (21 commits)
        r8169: avoid losing MSI interrupts
        tcp: tcp_vegas ssthresh bugfix
        mac8390: fix regression caused during net_device_ops conversion
        gianfar: fix BUG under load after introduction of skb recycling
        wimax/i2400m: usb: fix device reset on autosuspend while not yet idle
        RxRPC: Error handling for rxrpc_alloc_connection()
        ipv4: Fix oops with FIB_TRIE
        pktgen: do not access flows[] beyond its length
        gigaset: beyond ARRAY_SIZE of iwb->data
        IPv6: set RTPROT_KERNEL to initial route
        net: fix rtable leak in net/ipv4/route.c
        net: fix length computation in rt_check_expire()
        wireless: beyond ARRAY_SIZE of intf->crypto_stats
        iwlwifi: update 5000 ucode support to version 2 of API
        cfg80211: fix race between core hint and driver's custom apply
        airo: fix airo_get_encode{,ext} buffer overflow like I mean it...
        ath5k: fix interpolation with equal power levels
        iwlwifi: do not cancel delayed work inside spin_lock_irqsave
        ath5k: fix exp off-by-one when computing OFDM delta slope
        wext: verify buffer size for SIOCSIWENCODEEXT
        ...
      d4a76f8a
    • Linus Torvalds's avatar
      60a0cd52
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://neil.brown.name/md · e25e0920
      Linus Torvalds authored
      * 'for-linus' of git://neil.brown.name/md:
        md: don't use locked_ioctl.
        md: don't update curr_resync_completed without also updating reshape_position.
        md: raid5: avoid sector values going negative when testing reshape progress.
        md: export 'frozen' resync state through sysfs
        md: bitmap: improve bitmap maintenance code.
        md: improve errno return when setting array_size
        md: always update level / chunk_size / layout when writing v1.x metadata.
      e25e0920
    • Andreas Herrmann's avatar
      [CPUFREQ] powernow-k8: determine exact CPU frequency for HW Pstates · ca446d06
      Andreas Herrmann authored
      Slightly modified by trenn@suse.de -> only do this on fam 10h and fam 11h.
      
      Currently powernow-k8 determines CPU frequency from ACPI PSS objects, but
      according to AMD family 11h BKDG this frequency is just a rounded value:
      
        "CoreFreq (MHz) = The CPU COF specified by MSRC001_00[6B:64][CpuFid]
        rounded to the nearest 100 Mhz."
      
      As a consequnce powernow-k8 reports wrong CPU frequency on some systems,
      e.g. on Turion X2 Ultra:
      
        powernow-k8: Found 1 AMD Turion(tm)X2 Ultra DualCore Mobile ZM-82
                     processors (2 cpu cores) (version 2.20.00)
        powernow-k8:    0 : pstate 0 (2200 MHz)
        powernow-k8:    1 : pstate 1 (1100 MHz)
        powernow-k8:    2 : pstate 2 (600 MHz)
      
      But this is wrong as frequency for Pstate2 is 550 MHz. x86info reports it
      correctly:
      
        #x86info -a |grep Pstate
        ...
        Pstate-0: fid=e, did=0, vid=24 (2200MHz)
        Pstate-1: fid=e, did=1, vid=30 (1100MHz)
        Pstate-2: fid=e, did=2, vid=3c (550MHz) (current)
      
      Solution is to determine the frequency directly from Pstate MSRs instead
      of using rounded values from ACPI table.
      Signed-off-by: default avatarAndreas Herrmann <andreas.herrmann3@amd.com>
      Signed-off-by: default avatarThomas Renninger <trenn@suse.de>
      Signed-off-by: default avatarDave Jones <davej@redhat.com>
      ca446d06
    • Thomas Renninger's avatar
      [CPUFREQ] powernow-k8 cleanup msg if BIOS does not export ACPI _PSS cpufreq data · df182977
      Thomas Renninger authored
      - Make the message shorter and easier to grep for
      - Use printk_once instead of WARN_ONCE (functionality of these was mixed)
      Signed-off-by: default avatarThomas Renninger <trenn@suse.de>
      Cc: Langsdorf, Mark <mark.langsdorf@amd.com>
      Signed-off-by: default avatarDave Jones <davej@redhat.com>
      df182977
    • Mathieu Desnoyers's avatar
      [CPUFREQ] fix timer teardown in ondemand governor · b14893a6
      Mathieu Desnoyers authored
      * Rafael J. Wysocki (rjw@sisk.pl) wrote:
      > This message has been generated automatically as a part of a report
      > of regressions introduced between 2.6.28 and 2.6.29.
      >
      > The following bug entry is on the current list of known regressions
      > introduced between 2.6.28 and 2.6.29.  Please verify if it still should
      > be listed and let me know (either way).
      >
      >
      > Bug-Entry	: http://bugzilla.kernel.org/show_bug.cgi?id=13186
      > Subject		: cpufreq timer teardown problem
      > Submitter	: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
      > Date		: 2009-04-23 14:00 (24 days old)
      > References	: http://marc.info/?l=linux-kernel&m=124049523515036&w=4
      > Handled-By	: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
      > Patch		: http://patchwork.kernel.org/patch/19754/
      > 		  http://patchwork.kernel.org/patch/19753/
      >
      
      (updated changelog)
      
      cpufreq fix timer teardown in ondemand governor
      
      The problem is that dbs_timer_exit() uses cancel_delayed_work() when it should
      use cancel_delayed_work_sync(). cancel_delayed_work() does not wait for the
      workqueue handler to exit.
      
      The ondemand governor does not seem to be affected because the
      "if (!dbs_info->enable)" check at the beginning of the workqueue handler returns
      immediately without rescheduling the work. The conservative governor in
      2.6.30-rc has the same check as the ondemand governor, which makes things
      usually run smoothly. However, if the governor is quickly stopped and then
      started, this could lead to the following race :
      
      dbs_enable could be reenabled and multiple do_dbs_timer handlers would run.
      This is why a synchronized teardown is required.
      
      The following patch applies to, at least, 2.6.28.x, 2.6.29.1, 2.6.30-rc2.
      
      Depends on patch
      cpufreq: remove rwsem lock from CPUFREQ_GOV_STOP call
      Signed-off-by: default avatarMathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
      CC: Andrew Morton <akpm@linux-foundation.org>
      CC: gregkh@suse.de
      CC: stable@kernel.org
      CC: cpufreq@vger.kernel.org
      CC: Ingo Molnar <mingo@elte.hu>
      CC: rjw@sisk.pl
      CC: Ben Slusky <sluskyb@paranoiacs.org>
      Signed-off-by: default avatarDave Jones <davej@redhat.com>
      b14893a6
    • Mathieu Desnoyers's avatar
      [CPUFREQ] fix timer teardown in conservative governor · b253d2b2
      Mathieu Desnoyers authored
      * Rafael J. Wysocki (rjw@sisk.pl) wrote:
      > This message has been generated automatically as a part of a report
      > of regressions introduced between 2.6.28 and 2.6.29.
      >
      > The following bug entry is on the current list of known regressions
      > introduced between 2.6.28 and 2.6.29.  Please verify if it still should
      > be listed and let me know (either way).
      >
      >
      > Bug-Entry	: http://bugzilla.kernel.org/show_bug.cgi?id=13186
      > Subject		: cpufreq timer teardown problem
      > Submitter	: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
      > Date		: 2009-04-23 14:00 (24 days old)
      > References	: http://marc.info/?l=linux-kernel&m=124049523515036&w=4
      > Handled-By	: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
      > Patch		: http://patchwork.kernel.org/patch/19754/
      > 		  http://patchwork.kernel.org/patch/19753/
      >
      
      (re-send with updated changelog)
      
      cpufreq fix timer teardown in conservative governor
      
      The problem is that dbs_timer_exit() uses cancel_delayed_work() when it should
      use cancel_delayed_work_sync(). cancel_delayed_work() does not wait for the
      workqueue handler to exit.
      
      The ondemand governor does not seem to be affected because the
      "if (!dbs_info->enable)" check at the beginning of the workqueue handler returns
      immediately without rescheduling the work. The conservative governor in
      2.6.30-rc has the same check as the ondemand governor, which makes things
      usually run smoothly. However, if the governor is quickly stopped and then
      started, this could lead to the following race :
      
      dbs_enable could be reenabled and multiple do_dbs_timer handlers would run.
      This is why a synchronized teardown is required.
      
      Depends on patch
      cpufreq: remove rwsem lock from CPUFREQ_GOV_STOP call
      
      The following patch applies to 2.6.30-rc2. Stable kernels have a similar
      issue which should also be fixed, but the code changed between 2.6.29
      and 2.6.30, so this patch only applies to 2.6.30-rc.
      Signed-off-by: default avatarMathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
      CC: Andrew Morton <akpm@linux-foundation.org>
      CC: gregkh@suse.de
      CC: stable@kernel.org
      CC: cpufreq@vger.kernel.org
      CC: Ingo Molnar <mingo@elte.hu>
      CC: rjw@sisk.pl
      CC: Ben Slusky <sluskyb@paranoiacs.org>
      Signed-off-by: default avatarDave Jones <davej@redhat.com>
      b253d2b2
    • Mathieu Desnoyers's avatar
      [CPUFREQ] remove rwsem lock from CPUFREQ_GOV_STOP call · 42a06f21
      Mathieu Desnoyers authored
      * Rafael J. Wysocki (rjw@sisk.pl) wrote:
      > This message has been generated automatically as a part of a report
      > of regressions introduced between 2.6.28 and 2.6.29.
      >
      > The following bug entry is on the current list of known regressions
      > introduced between 2.6.28 and 2.6.29.  Please verify if it still should
      > be listed and let me know (either way).
      >
      >
      > Bug-Entry	: http://bugzilla.kernel.org/show_bug.cgi?id=13186
      > Subject		: cpufreq timer teardown problem
      > Submitter	: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
      > Date		: 2009-04-23 14:00 (24 days old)
      > References	: http://marc.info/?l=linux-kernel&m=124049523515036&w=4
      > Handled-By	: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
      > Patch		: http://patchwork.kernel.org/patch/19754/
      > 		  http://patchwork.kernel.org/patch/19753/
      
      The patches linked above depend on the following patch to remove
      circular locking dependency :
      
      cpufreq: remove rwsem lock from CPUFREQ_GOV_STOP call
      
      (the following issue was faced when using cancel_delayed_work_sync() in the
      timer teardown (which fixes a race).
      
      * KOSAKI Motohiro (kosaki.motohiro@jp.fujitsu.com) wrote:
      > Hi
      >
      > my box output following warnings.
      > it seems regression by commit 7ccc7608b836e58fbacf65ee4f8eefa288e86fac.
      >
      > A: work -> do_dbs_timer()  -> cpu_policy_rwsem
      > B: store() -> cpu_policy_rwsem -> cpufreq_governor_dbs() -> work
      >
      >
      
      Hrm, I think it must be due to my attempt to fix the timer teardown race
      in ondemand governor mixed with new locking behavior in 2.6.30-rc.
      
      The rwlock seems to be taken around the whole call to
      cpufreq_governor_dbs(), when it should be only taken around accesses to
      the locked data, and especially *not* around the call to
      dbs_timer_exit().
      
      Reverting my fix attempt would put the teardown race back in place
      (replacing the cancel_delayed_work_sync by cancel_delayed_work).
      Instead, a proper fix would imply modifying this critical section :
      
      cpufreq.c: __cpufreq_remove_dev()
      ...
              if (cpufreq_driver->target)
                      __cpufreq_governor(data, CPUFREQ_GOV_STOP);
      
              unlock_policy_rwsem_write(cpu);
      
      To make sure the __cpufreq_governor() callback is not called with rwsem
      held. This would allow execution of cancel_delayed_work_sync() without
      being nested within the rwsem.
      
      Applies on top of the 2.6.30-rc5 tree.
      
      Required to remove circular dep in teardown of both conservative and
      ondemande governors so they can use cancel_delayed_work_sync().
      CPUFREQ_GOV_STOP does not modify the policy, therefore this locking seemed
      unneeded.
      Signed-off-by: default avatarMathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
      CC: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
      Cc: Greg KH <greg@kroah.com>
      CC: Ingo Molnar <mingo@elte.hu>
      CC: "Rafael J. Wysocki" <rjw@sisk.pl>
      CC: Ben Slusky <sluskyb@paranoiacs.org>
      CC: Chris Wright <chrisw@sous-sol.org>
      CC: Andrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarDave Jones <davej@redhat.com>
      42a06f21
    • Dave Jones's avatar
      [CPUFREQ] powernow-k7 build fix when ACPI=n · d38e73e8
      Dave Jones authored
      arch/x86/kernel/cpu/cpufreq/powernow-k7.c:172: warning: 'invalidate_entry' defined but not used
      Reported-by: default avatarToralf Förster <toralf.foerster@gmx.de>
      Signed-off-by: default avatarDave Jones <davej@redhat.com>
      d38e73e8
    • Jarod Wilson's avatar
      [CPUFREQ] add atom family to p4-clockmod · 43195037
      Jarod Wilson authored
      Some atom procs don't do freq scaling (such as the atom 330 on my own
      littlefalls2 board). By adding the atom family here, we at least get
      the benefit of passive cooling in a thermal emergency. Not sure how
      to see that its actually helping any, but the driver does bind and
      claim its functioning on my atom 330.
      Signed-off-by: default avatarJarod Wilson <jarod@redhat.com>
      Signed-off-by: default avatarDave Jones <davej@redhat.com>
      43195037
    • David S. Miller's avatar
    • David Dillow's avatar
      r8169: avoid losing MSI interrupts · f11a377b
      David Dillow authored
      The 8169 chip only generates MSI interrupts when all enabled event
      sources are quiescent and one or more sources transition to active. If
      not all of the active events are acknowledged, or a new event becomes
      active while the existing ones are cleared in the handler, we will not
      see a new interrupt.
      
      The current interrupt handler masks off the Rx and Tx events once the
      NAPI handler has been scheduled, which opens a race window in which we
      can get another Rx or Tx event and never ACK'ing it, stopping all
      activity until the link is reset (ifconfig down/up). Fix this by always
      ACK'ing all event sources, and loop in the handler until we have all
      sources quiescent.
      Signed-off-by: default avatarDavid Dillow <dave@thedillows.org>
      Tested-by: default avatarMichael Buesch <mb@bu3sch.de>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      f11a377b
    • Doug Leith's avatar
      tcp: tcp_vegas ssthresh bugfix · c80a5cdf
      Doug Leith authored
      This patch fixes ssthresh accounting issues in tcp_vegas when cwnd decreases
      Signed-off-by: default avatarDoug Leith <doug.leith@nuim.ie>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      c80a5cdf
    • Finn Thain's avatar
      mac8390: fix regression caused during net_device_ops conversion · 217cbfa8
      Finn Thain authored
      Changeset ca17584b ("mac8390: update
      to net_device_ops") broke mac8390 by adding 8390.o to the link. That
      meant that lib8390.c was included twice, once in mac8390.c and once in
      8390.c, subject to different macros. This patch reverts that by
      avoiding the wrappers in 8390.c. They seem to be of no value since
      COMPAT_NET_DEV_OPS is going away soon.
      
      Tested with a Kinetics EtherPort card.
      Signed-off-by: default avatarFinn Thain <fthain@telegraphics.com.au>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      217cbfa8
    • Hideo Saito's avatar
      powerpc/mm: Fix broken MMU PID stealing on !SMP · 8e35961b
      Hideo Saito authored
      The recent rework of the MMU PID handling for non-hash CPUs has a
      subtle bug in the !SMP "optimized" variant of the PID stealing
      function.  It clears the PID in the mm context before it calls
      local_flush_tlb_mm(). However, the later will not flush anything
      if the PID in the context is clear...
      Signed-off-by: default avatarHideo Saito <hsaito.ppc@gmail.com>
      Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
      8e35961b
    • NeilBrown's avatar
      md: don't use locked_ioctl. · b492b852
      NeilBrown authored
      md has no need for the BKL - it does its own locking.
      So md_ioctl doesn't need to be a locked_ioctl.
      Signed-off-by: default avatarNeilBrown <neilb@suse.de>
      b492b852
    • NeilBrown's avatar
      md: don't update curr_resync_completed without also updating reshape_position. · 7a91ee1f
      NeilBrown authored
      In order for the metadata to always be consistent, we mustn't updated
      curr_resync_completed without also updating reshape_position.
      
      The reshape code updates both at the same time.  However since
      commit 97e4f42d
      the common md_do_sync will sometimes update curr_resync_completed
      but is not in a position to update reshape_position.
      So if MD_RECOVERY_RESHAPE is set (indicating that a reshape is
      happening, so reshape_position might change), don't update
      curr_resync_completed in md_do_sync, leave it to the per-personality
      reshape code.
      Signed-off-by: default avatarNeilBrown <neilb@suse.de>
      7a91ee1f
    • NeilBrown's avatar
      md: raid5: avoid sector values going negative when testing reshape progress. · 848b3182
      NeilBrown authored
      As sector_t in unsigned, we cannot afford to let 'safepos' etc go
      negative.
      So replace
         a -= b;
      by
         a -= min(b,a);
      Signed-off-by: default avatarNeilBrown <neilb@suse.de>
      848b3182
  2. 25 May, 2009 11 commits
  3. 24 May, 2009 3 commits
  4. 23 May, 2009 5 commits
    • Linus Torvalds's avatar
      Linux 2.6.30-rc7 · 59a3759d
      Linus Torvalds authored
      59a3759d
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-rc-fixes-2.6 · 4a5dacec
      Linus Torvalds authored
      * git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-rc-fixes-2.6:
        [SCSI] mpt2sas: fix driver version inconsistency
        [SCSI] 3w-xxxx: scsi_dma_unmap fix
        [SCSI] 3w-9xxx: scsi_dma_unmap fix
        [SCSI] ses: fix problems caused by empty SES provided name
        [SCSI] fc-transport: Close state transition-window during rport deletion.
        [SCSI] initialize max_target_blocked in scsi_alloc_target
        [SCSI] fnic: Add new Cisco PCI-Express FCoE HBA
      4a5dacec
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6 · 3eb9c8be
      Linus Torvalds authored
      * git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6:
        [CIFS] Avoid open on possible directories since Samba now rejects them
      3eb9c8be
    • Steve French's avatar
      [CIFS] Avoid open on possible directories since Samba now rejects them · 8db14ca1
      Steve French authored
      Small change (mostly formatting) to limit lookup based open calls to
      file create only.
      
      After discussion yesteday on samba-technical about the posix lookup
      regression,  and looking at a problem with cifs posix open to one
      particular Samba version, Jeff and JRA realized that Samba server's
      behavior changed in this area (posix open behavior on files vs.
      directories).   To make this behavior consistent, JRA just made a
      fix to Samba server to alter how it handles open of directories (now
      returning the equivalent of EISDIR instead of success). Since we don't
      know at lookup time whether the inode is a directory or file (and
      thus whether posix open will succeed with most current Samba server),
      this change avoids the posix open code on lookup open (just issues
      posix open on creates).    This gets the semantic benefits we want
      (atomicity, posix byte range locks, improved write semantics on newly
      created files) and file create still is fast, and we avoid the problem
      that Jeff noticed yesterday with "openat" (and some open directory
      calls) of non-cached directories to one version of Samba server, and
      will work with future Samba versions (which include the fix jra just
      pushed into Samba server).  I confirmed this approach with jra
      yesterday and with Shirish today.
      
      Posix open is only called (at lookup time) for file create now.
      For opens (rather than creates), because we do not know if it
      is a file or directory yet, and current Samba no longer allows
      us to do posix open on dirs, we could end up wasting an open call
      on what turns out to be a dir. For file opens, we wait to call posix
      open till cifs_open.  It could be added here (lookup) in the future
      but the performance tradeoff of the extra network request when EISDIR
      or EACCES is returned would have to be weighed against the 50%
      reduction in network traffic in the other paths.
      Reviewed-by: default avatarShirish Pargaonkar <shirishp@us.ibm.com>
      Tested-by: default avatarJeff Layton <jlayton@redhat.com>
      CC: Jeremy Allison <jra@samba.org>
      Signed-off-by: default avatarSteve French <sfrench@us.ibm.com>
      8db14ca1
    • Breno Leitao's avatar
      icom: fix rmmod crash · 95caa0a9
      Breno Leitao authored
      Actually the icom driver is crashing when is being removed because
      the driver is kfreeing the adapter structure before calling
      pci_release_regions(), which result in the following error:
      
        Unable to handle kernel paging request for data at address 0x6b6b6b6b6b6b6d33
        Faulting instruction address: 0xc000000000246b80
        Oops: Kernel access of bad area, sig: 11 [#1]
        ....
        [c000000012d436a0] [c0000000001002d0] .kfree+0x120/0x34c (unreliable)
        [c000000012d43730] [c000000000246d60] .pci_release_selected_regions+0x3c/0x68
        [c000000012d437c0] [d000000002d54700] .icom_kref_release+0xf4/0x118 [icom]
        [c000000012d43850] [c000000000232e50] .kref_put+0x74/0x94
        [c000000012d438d0] [d000000002d56c58] .icom_remove+0x40/0xa4 [icom]
        [c000000012d43960] [c000000000249e48] .pci_device_remove+0x50/0x90
        [c000000012d439e0] [c0000000002d68d8] .__device_release_driver+0x94/0xd4
        [c000000012d43a70] [c0000000002d7104] .driver_detach+0xf8/0x12c
        [c000000012d43b00] [c0000000002d549c] .bus_remove_driver+0xbc/0x11c
        [c000000012d43b90] [c0000000002d71dc] .driver_unregister+0x60/0x80
        [c000000012d43c20] [c00000000024a07c] .pci_unregister_driver+0x44/0xe8
        [c000000012d43cb0] [d000000002d56bf4] .icom_exit+0x1c/0x40 [icom]
        [c000000012d43d30] [c000000000095fa8] .SyS_delete_module+0x214/0x2a8
        [c000000012d43e30] [c00000000000852c] syscall_exit+0x0/0x40
      Signed-off-by: default avatarBreno Leitao <leitao@linux.vnet.ibm.com>
      Cc: stable@kernel.org
      Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      95caa0a9