1. 27 Jun, 2013 19 commits
    • Jiri Pirko's avatar
      team: check return value of team_get_port_by_index_rcu() for NULL · a50ebefd
      Jiri Pirko authored
      [ Upstream commit 76c455de ]
      
      team_get_port_by_index_rcu() might return NULL due to race between port
      removal and skb tx path. Panic is easily triggeable when txing packets
      and adding/removing port in a loop.
      
      introduced by commit 3d249d4c "net: introduce ethernet teaming device"
      and commit 753f9939 "team: introduce random mode" (for random mode)
      Signed-off-by: default avatarJiri Pirko <jiri@resnulli.us>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      a50ebefd
    • Daniel Borkmann's avatar
      net: sctp: fix NULL pointer dereference in socket destruction · 93f75344
      Daniel Borkmann authored
      [ Upstream commit 1abd165e ]
      
      While stress testing sctp sockets, I hit the following panic:
      
      BUG: unable to handle kernel NULL pointer dereference at 0000000000000020
      IP: [<ffffffffa0490c4e>] sctp_endpoint_free+0xe/0x40 [sctp]
      PGD 7cead067 PUD 7ce76067 PMD 0
      Oops: 0000 [#1] SMP
      Modules linked in: sctp(F) libcrc32c(F) [...]
      CPU: 7 PID: 2950 Comm: acc Tainted: GF            3.10.0-rc2+ #1
      Hardware name: Dell Inc. PowerEdge T410/0H19HD, BIOS 1.6.3 02/01/2011
      task: ffff88007ce0e0c0 ti: ffff88007b568000 task.ti: ffff88007b568000
      RIP: 0010:[<ffffffffa0490c4e>]  [<ffffffffa0490c4e>] sctp_endpoint_free+0xe/0x40 [sctp]
      RSP: 0018:ffff88007b569e08  EFLAGS: 00010292
      RAX: 0000000000000000 RBX: ffff88007db78a00 RCX: dead000000200200
      RDX: ffffffffa049fdb0 RSI: ffff8800379baf38 RDI: 0000000000000000
      RBP: ffff88007b569e18 R08: ffff88007c230da0 R09: 0000000000000001
      R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000000
      R13: ffff880077990d00 R14: 0000000000000084 R15: ffff88007db78a00
      FS:  00007fc18ab61700(0000) GS:ffff88007fc60000(0000) knlGS:0000000000000000
      CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
      CR2: 0000000000000020 CR3: 000000007cf9d000 CR4: 00000000000007e0
      DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
      DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
      Stack:
       ffff88007b569e38 ffff88007db78a00 ffff88007b569e38 ffffffffa049fded
       ffffffff81abf0c0 ffff88007db78a00 ffff88007b569e58 ffffffff8145b60e
       0000000000000000 0000000000000000 ffff88007b569eb8 ffffffff814df36e
      Call Trace:
       [<ffffffffa049fded>] sctp_destroy_sock+0x3d/0x80 [sctp]
       [<ffffffff8145b60e>] sk_common_release+0x1e/0xf0
       [<ffffffff814df36e>] inet_create+0x2ae/0x350
       [<ffffffff81455a6f>] __sock_create+0x11f/0x240
       [<ffffffff81455bf0>] sock_create+0x30/0x40
       [<ffffffff8145696c>] SyS_socket+0x4c/0xc0
       [<ffffffff815403be>] ? do_page_fault+0xe/0x10
       [<ffffffff8153cb32>] ? page_fault+0x22/0x30
       [<ffffffff81544e02>] system_call_fastpath+0x16/0x1b
      Code: 0c c9 c3 66 2e 0f 1f 84 00 00 00 00 00 e8 fb fe ff ff c9 c3 66 0f
            1f 84 00 00 00 00 00 55 48 89 e5 53 48 83 ec 08 66 66 66 66 90 <48>
            8b 47 20 48 89 fb c6 47 1c 01 c6 40 12 07 e8 9e 68 01 00 48
      RIP  [<ffffffffa0490c4e>] sctp_endpoint_free+0xe/0x40 [sctp]
       RSP <ffff88007b569e08>
      CR2: 0000000000000020
      ---[ end trace e0d71ec1108c1dd9 ]---
      
      I did not hit this with the lksctp-tools functional tests, but with a
      small, multi-threaded test program, that heavily allocates, binds,
      listens and waits in accept on sctp sockets, and then randomly kills
      some of them (no need for an actual client in this case to hit this).
      Then, again, allocating, binding, etc, and then killing child processes.
      
      This panic then only occurs when ``echo 1 > /proc/sys/net/sctp/auth_enable''
      is set. The cause for that is actually very simple: in sctp_endpoint_init()
      we enter the path of sctp_auth_init_hmacs(). There, we try to allocate
      our crypto transforms through crypto_alloc_hash(). In our scenario,
      it then can happen that crypto_alloc_hash() fails with -EINTR from
      crypto_larval_wait(), thus we bail out and release the socket via
      sk_common_release(), sctp_destroy_sock() and hit the NULL pointer
      dereference as soon as we try to access members in the endpoint during
      sctp_endpoint_free(), since endpoint at that time is still NULL. Now,
      if we have that case, we do not need to do any cleanup work and just
      leave the destruction handler.
      Signed-off-by: default avatarDaniel Borkmann <dborkman@redhat.com>
      Acked-by: default avatarNeil Horman <nhorman@tuxdriver.com>
      Acked-by: default avatarVlad Yasevich <vyasevich@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      93f75344
    • Gao feng's avatar
      ipv6: assign rt6_info to inet6_ifaddr in init_loopback · 2f4997c9
      Gao feng authored
      [ Upstream commit 534c8779 ]
      
      Commit 25fb6ca4
      "net IPv6 : Fix broken IPv6 routing table after loopback down-up"
      forgot to assign rt6_info to the inet6_ifaddr.
      When disable the net device, the rt6_info which allocated
      in init_loopback will not be destroied in __ipv6_ifa_notify.
      
      This will trigger the waring message below
      [23527.916091] unregister_netdevice: waiting for tap0 to become free. Usage count = 1
      Reported-by: default avatarArkadiusz Miskiewicz <a.miskiewicz@gmail.com>
      Signed-off-by: default avatarGao feng <gaofeng@cn.fujitsu.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      2f4997c9
    • Eric Dumazet's avatar
      net: force a reload of first item in hlist_nulls_for_each_entry_rcu · 689ec122
      Eric Dumazet authored
      [ Upstream commit c87a124a ]
      
      Roman Gushchin discovered that udp4_lib_lookup2() was not reloading
      first item in the rcu protected list, in case the loop was restarted.
      
      This produced soft lockups as in https://lkml.org/lkml/2013/4/16/37
      
      rcu_dereference(X)/ACCESS_ONCE(X) seem to not work as intended if X is
      ptr->field :
      
      In some cases, gcc caches the value or ptr->field in a register.
      
      Use a barrier() to disallow such caching, as documented in
      Documentation/atomic_ops.txt line 114
      
      Thanks a lot to Roman for providing analysis and numerous patches.
      Diagnosed-by: default avatarRoman Gushchin <klamm@yandex-team.ru>
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Reported-by: default avatarBoris Zhmurov <zhmurov@yandex-team.ru>
      Signed-off-by: default avatarRoman Gushchin <klamm@yandex-team.ru>
      Acked-by: default avatarPaul E. McKenney <paulmck@linux.vnet.ibm.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      689ec122
    • Andy Lutomirski's avatar
      net: Block MSG_CMSG_COMPAT in send(m)msg and recv(m)msg · c0cc94f2
      Andy Lutomirski authored
      [ Upstream commits 1be374a0 and
        a7526eb5 ]
      
      MSG_CMSG_COMPAT is (AFAIK) not intended to be part of the API --
      it's a hack that steals a bit to indicate to other networking code
      that a compat entry was used.  So don't allow it from a non-compat
      syscall.
      
      This prevents an oops when running this code:
      
      int main()
      {
      	int s;
      	struct sockaddr_in addr;
      	struct msghdr *hdr;
      
      	char *highpage = mmap((void*)(TASK_SIZE_MAX - 4096), 4096,
      	                      PROT_READ | PROT_WRITE,
      	                      MAP_PRIVATE | MAP_ANONYMOUS | MAP_FIXED, -1, 0);
      	if (highpage == MAP_FAILED)
      		err(1, "mmap");
      
      	s = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
      	if (s == -1)
      		err(1, "socket");
      
              addr.sin_family = AF_INET;
              addr.sin_port = htons(1);
              addr.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
      	if (connect(s, (struct sockaddr*)&addr, sizeof(addr)) != 0)
      		err(1, "connect");
      
      	void *evil = highpage + 4096 - COMPAT_MSGHDR_SIZE;
      	printf("Evil address is %p\n", evil);
      
      	if (syscall(__NR_sendmmsg, s, evil, 1, MSG_CMSG_COMPAT) < 0)
      		err(1, "sendmmsg");
      
      	return 0;
      }
      Signed-off-by: default avatarAndy Lutomirski <luto@amacapital.net>
      Cc: David S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      c0cc94f2
    • Eric Dumazet's avatar
      ip_tunnel: fix kernel panic with icmp_dest_unreach · 3c353df4
      Eric Dumazet authored
      [ Upstream commit a6222602 ]
      
      Daniel Petre reported crashes in icmp_dst_unreach() with following call
      graph:
      
      Daniel found a similar problem mentioned in
       http://lkml.indiana.edu/hypermail/linux/kernel/1007.0/00961.html
      
      And indeed this is the root cause : skb->cb[] contains data fooling IP
      stack.
      
      We must clear IPCB in ip_tunnel_xmit() sooner in case dst_link_failure()
      is called. Or else skb->cb[] might contain garbage from GSO segmentation
      layer.
      
      A similar fix was tested on linux-3.9, but gre code was refactored in
      linux-3.10. I'll send patches for stable kernels as well.
      
      Many thanks to Daniel for providing reports, patches and testing !
      Reported-by: default avatarDaniel Petre <daniel.petre@rcs-rds.ro>
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      3c353df4
    • Eric Dumazet's avatar
      tcp: xps: fix reordering issues · fa17eb75
      Eric Dumazet authored
      [ Upstream commit 547669d4 ]
      
      commit 3853b584 ("xps: Improvements in TX queue selection")
      introduced ooo_okay flag, but the condition to set it is slightly wrong.
      
      In our traces, we have seen ACK packets being received out of order,
      and RST packets sent in response.
      
      We should test if we have any packets still in host queue.
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Cc: Tom Herbert <therbert@google.com>
      Cc: Yuchung Cheng <ycheng@google.com>
      Cc: Neal Cardwell <ncardwell@google.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      fa17eb75
    • Nandita Dukkipati's avatar
      tcp: bug fix in proportional rate reduction. · 2d73733f
      Nandita Dukkipati authored
      [ Upstream commit 35f079eb ]
      
      This patch is a fix for a bug triggering newly_acked_sacked < 0
      in tcp_ack(.).
      
      The bug is triggered by sacked_out decreasing relative to prior_sacked,
      but packets_out remaining the same as pior_packets. This is because the
      snapshot of prior_packets is taken after tcp_sacktag_write_queue() while
      prior_sacked is captured before tcp_sacktag_write_queue(). The problem
      is: tcp_sacktag_write_queue (tcp_match_skb_to_sack() -> tcp_fragment)
      adjusts the pcount for packets_out and sacked_out (MSS change or other
      reason). As a result, this delta in pcount is reflected in
      (prior_sacked - sacked_out) but not in (prior_packets - packets_out).
      
      This patch does the following:
      1) initializes prior_packets at the start of tcp_ack() so as to
      capture the delta in packets_out created by tcp_fragment.
      2) introduces a new "previous_packets_out" variable that snapshots
      packets_out right before tcp_clean_rtx_queue, so pkts_acked can be
      correctly computed as before.
      3) Computes pkts_acked using previous_packets_out, and computes
      newly_acked_sacked using prior_packets.
      Signed-off-by: default avatarNandita Dukkipati <nanditad@google.com>
      Acked-by: default avatarYuchung Cheng <ycheng@google.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      2d73733f
    • stephen hemminger's avatar
      8139cp: reset BQL when ring tx ring cleared · f52159d6
      stephen hemminger authored
      [ Upstream commit 98962baa ]
      
      This patch cures transmit timeout's with DHCP observed
      while running under KVM. When the transmit ring is cleaned out,
      the Byte Queue Limit values need to be reset.
      Signed-off-by: default avatarStephen Hemminger <stephen@networkplumber.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      f52159d6
    • Francois Romieu's avatar
      r8169: fix offloaded tx checksum for small packets. · b9ca98a9
      Francois Romieu authored
      [ Upstream commit b423e9ae ]
      
      8168evl offloaded checksums are wrong since commit
      e5195c1f ("r8169: fix 8168evl frame padding.")
      pads small packets to 60 bytes (without ethernet checksum). Typical symptoms
      appear as UDP checksums which are wrong by the count of added bytes.
      
      It isn't worth compensating. Let the driver checksum.
      
      Due to the skb length changes, TSO code is moved before the Tx descriptor gets
      written.
      Signed-off-by: default avatarFrancois Romieu <romieu@fr.zoreil.com>
      Tested-by: default avatarHolger Hoffstätte <holger.hoffstaette@googlemail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      b9ca98a9
    • Paul Moore's avatar
      netlabel: improve domain mapping validation · 7718fa70
      Paul Moore authored
      [ Upstream commit 6b21e1b7 ]
      
      The net/netlabel/netlabel_domainhash.c:netlbl_domhsh_add() function
      does not properly validate new domain hash entries resulting in
      potential problems when an administrator attempts to add an invalid
      entry.  One such problem, as reported by Vlad Halilov, is a kernel
      BUG (found in netlabel_domainhash.c:netlbl_domhsh_audit_add()) when
      adding an IPv6 outbound mapping with a CIPSO configuration.
      
      This patch corrects this problem by adding the necessary validation
      code to netlbl_domhsh_add() via the newly created
      netlbl_domhsh_validate() function.
      
      Ideally this patch should also be pushed to the currently active
      -stable trees.
      Reported-by: default avatarVlad Halilov <vlad.halilov@gmail.com>
      Signed-off-by: default avatarPaul Moore <pmoore@redhat.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      7718fa70
    • Eric Dumazet's avatar
      ipv6: fix possible crashes in ip6_cork_release() · 32d704a1
      Eric Dumazet authored
      [ Upstream commit 284041ef ]
      
      commit 0178b695 ("ipv6: Copy cork options in ip6_append_data")
      added some code duplication and bad error recovery, leading to potential
      crash in ip6_cork_release() as kfree() could be called with garbage.
      
      use kzalloc() to make sure this wont happen.
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Cc: Herbert Xu <herbert@gondor.apana.org.au>
      Cc: Hideaki YOSHIFUJI <yoshfuji@linux-ipv6.org>
      Cc: Neal Cardwell <ncardwell@google.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      32d704a1
    • Wei Yongjun's avatar
      gianfar: add missing iounmap() on error in gianfar_ptp_probe() · c7663194
      Wei Yongjun authored
      [ Upstream commit e5f5e380 ]
      
      Add the missing iounmap() before return from gianfar_ptp_probe()
      in the error handling case.
      Signed-off-by: default avatarWei Yongjun <yongjun_wei@trendmicro.com.cn>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      c7663194
    • Eric Dumazet's avatar
      tcp: fix tcp_md5_hash_skb_data() · d193887e
      Eric Dumazet authored
      [ Upstream commit 54d27fcb ]
      
      TCP md5 communications fail [1] for some devices, because sg/crypto code
      assume page offsets are below PAGE_SIZE.
      
      This was discovered using mlx4 driver [2], but I suspect loopback
      might trigger the same bug now we use order-3 pages in tcp_sendmsg()
      
      [1] Failure is giving following messages.
      
      huh, entered softirq 3 NET_RX ffffffff806ad230 preempt_count 00000100,
      exited with 00000101?
      
      [2] mlx4 driver uses order-2 pages to allocate RX frags
      Reported-by: default avatarMatt Schnall <mischnal@google.com>
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Cc: Bernhard Beck <bbeck@google.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      d193887e
    • Zhanghaoyu (A)'s avatar
      KVM: x86: remove vcpu's CPL check in host-invoked XCR set · e6e045d5
      Zhanghaoyu (A) authored
      commit 764bcbc5 upstream.
      
      __kvm_set_xcr function does the CPL check when set xcr. __kvm_set_xcr is
      called in two flows, one is invoked by guest, call stack shown as below,
      
        handle_xsetbv(or xsetbv_interception)
          kvm_set_xcr
            __kvm_set_xcr
      
      the other one is invoked by host, for example during system reset:
      
        kvm_arch_vcpu_ioctl
          kvm_vcpu_ioctl_x86_set_xcrs
            __kvm_set_xcr
      
      The former does need the CPL check, but the latter does not.
      Signed-off-by: default avatarZhang Haoyu <haoyu.zhang@huawei.com>
      [Tweaks to commit message. - Paolo]
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      e6e045d5
    • Chris Metcalf's avatar
      tilepro: work around module link error with gcc 4.7 · 68447fe9
      Chris Metcalf authored
      commit 3cb3f839 upstream.
      
      gcc 4.7.x is emitting calls to __ffsdi2 where previously
      it used to inline the appropriate ctz instructions.
      While this needs to be fixed in gcc, it's also easy to avoid
      having it cause build failures when building with those
      compilers by exporting __ffsdi2 to modules.
      Signed-off-by: default avatarChris Metcalf <cmetcalf@tilera.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      68447fe9
    • Lai Jiangshan's avatar
      clk: remove notifier from list before freeing it · f86571e8
      Lai Jiangshan authored
      commit 72b5322f upstream.
      
      The @cn is stay in @clk_notifier_list after it is freed, it cause
      memory corruption.
      
      Example, if @clk is registered(first), unregistered(first),
      registered(second), unregistered(second).
      
      The freed @cn will be used when @clk is registered(second),
      and the bug will be happened when @clk is unregistered(second):
      
      [  517.040000] clk_notif_dbg clk_notif_dbg.1: clk_notifier_unregister()
      [  517.040000] Unable to handle kernel paging request at virtual address 00df3008
      [  517.050000] pgd = ed858000
      [  517.050000] [00df3008] *pgd=00000000
      [  517.060000] Internal error: Oops: 5 [#1] PREEMPT SMP ARM
      [  517.060000] Modules linked in: clk_notif_dbg(O-) [last unloaded: clk_notif_dbg]
      [  517.060000] CPU: 1 PID: 499 Comm: modprobe Tainted: G           O 3.10.0-rc3-00119-ga93cb29a-dirty #85
      [  517.060000] task: ee1e0180 ti: ee3e6000 task.ti: ee3e6000
      [  517.060000] PC is at srcu_readers_seq_idx+0x48/0x84
      [  517.060000] LR is at srcu_readers_seq_idx+0x60/0x84
      [  517.060000] pc : [<c0052720>]    lr : [<c0052738>]    psr: 80070013
      [  517.060000] sp : ee3e7d48  ip : 00000000  fp : ee3e7d6c
      [  517.060000] r10: 00000000  r9 : ee3e6000  r8 : 00000000
      [  517.060000] r7 : ed84fe4c  r6 : c068ec90  r5 : c068e430  r4 : 00000000
      [  517.060000] r3 : 00df3000  r2 : 00000000  r1 : 00000002  r0 : 00000000
      [  517.060000] Flags: Nzcv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment user
      [  517.060000] Control: 18c5387d  Table: 2d85804a  DAC: 00000015
      [  517.060000] Process modprobe (pid: 499, stack limit = 0xee3e6238)
      [  517.060000] Stack: (0xee3e7d48 to 0xee3e8000)
      ....
      [  517.060000] [<c0052720>] (srcu_readers_seq_idx+0x48/0x84) from [<c0052790>] (try_check_zero+0x34/0xfc)
      [  517.060000] [<c0052790>] (try_check_zero+0x34/0xfc) from [<c00528b0>] (srcu_advance_batches+0x58/0x114)
      [  517.060000] [<c00528b0>] (srcu_advance_batches+0x58/0x114) from [<c0052c30>] (__synchronize_srcu+0x114/0x1ac)
      [  517.060000] [<c0052c30>] (__synchronize_srcu+0x114/0x1ac) from [<c0052d14>] (synchronize_srcu+0x2c/0x34)
      [  517.060000] [<c0052d14>] (synchronize_srcu+0x2c/0x34) from [<c0053a08>] (srcu_notifier_chain_unregister+0x68/0x74)
      [  517.060000] [<c0053a08>] (srcu_notifier_chain_unregister+0x68/0x74) from [<c0375a78>] (clk_notifier_unregister+0x7c/0xc0)
      [  517.060000] [<c0375a78>] (clk_notifier_unregister+0x7c/0xc0) from [<bf008034>] (clk_notif_dbg_remove+0x34/0x9c [clk_notif_dbg])
      [  517.060000] [<bf008034>] (clk_notif_dbg_remove+0x34/0x9c [clk_notif_dbg]) from [<c02bb974>] (platform_drv_remove+0x24/0x28)
      [  517.060000] [<c02bb974>] (platform_drv_remove+0x24/0x28) from [<c02b9bf8>] (__device_release_driver+0x8c/0xd4)
      [  517.060000] [<c02b9bf8>] (__device_release_driver+0x8c/0xd4) from [<c02ba680>] (driver_detach+0x9c/0xc4)
      [  517.060000] [<c02ba680>] (driver_detach+0x9c/0xc4) from [<c02b99c4>] (bus_remove_driver+0xcc/0xfc)
      [  517.060000] [<c02b99c4>] (bus_remove_driver+0xcc/0xfc) from [<c02bace4>] (driver_unregister+0x54/0x78)
      [  517.060000] [<c02bace4>] (driver_unregister+0x54/0x78) from [<c02bbb44>] (platform_driver_unregister+0x1c/0x20)
      [  517.060000] [<c02bbb44>] (platform_driver_unregister+0x1c/0x20) from [<bf0081f8>] (clk_notif_dbg_driver_exit+0x14/0x1c [clk_notif_dbg])
      [  517.060000] [<bf0081f8>] (clk_notif_dbg_driver_exit+0x14/0x1c [clk_notif_dbg]) from [<c00835e4>] (SyS_delete_module+0x200/0x28c)
      [  517.060000] [<c00835e4>] (SyS_delete_module+0x200/0x28c) from [<c000edc0>] (ret_fast_syscall+0x0/0x48)
      [  517.060000] Code: e5973004 e7911102 e0833001 e2881002 (e7933101)
      Reported-by: default avatarSören Brinkmann <soren.brinkmann@xilinx.com>
      Signed-off-by: default avatarLai Jiangshan <laijs@cn.fujitsu.com>
      Tested-by: default avatarSören Brinkmann <soren.brinkmann@xilinx.com>
      Signed-off-by: default avatarMike Turquette <mturquette@linaro.org>
      [mturquette@linaro.org: shortened $SUBJECT]
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      f86571e8
    • Clemens Ladisch's avatar
      ALSA: usb-audio: work around Android accessory firmware bug · e02a738d
      Clemens Ladisch authored
      commit 342cda29 upstream.
      
      When the Android firmware enables the audio interfaces in accessory
      mode, it always declares in the control interface's baInterfaceNr array
      that interfaces 0 and 1 belong to the audio function.  However, the
      accessory interface itself, if also enabled, already is at index 0 and
      shifts the actual audio interface numbers to 1 and 2, which prevents the
      PCM streaming interface from being seen by the host driver.
      
      To get the PCM interface interface to work, detect when the descriptors
      point to the (for this driver useless) accessory interface, and redirect
      to the correct one.
      Reported-by: default avatarJeremy Rosen <jeremy.rosen@openwide.fr>
      Tested-by: default avatarJeremy Rosen <jeremy.rosen@openwide.fr>
      Signed-off-by: default avatarClemens Ladisch <clemens@ladisch.de>
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      e02a738d
    • Takashi Iwai's avatar
      ALSA: usb-audio: Fix invalid volume resolution for Logitech HD Webcam c310 · 2dc07099
      Takashi Iwai authored
      commit 36691e1b upstream.
      
      Just like the previous fix for LogitechHD Webcam c270 in commit
      11e7064f, c310 model also requires the
      same workaround for avoiding the kernel warning.
      
      Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=59741Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      2dc07099
  2. 20 Jun, 2013 21 commits