lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAGRyCJF39NQmwNAUoxFHTSnZ8WCGXKuWVyPoPQ0KnHcAAsmR+A@mail.gmail.com>
Date:   Thu, 13 Jun 2019 17:14:24 +0200
From:   Daniele Palmas <dnlplm@...il.com>
To:     Reinhard Speyerer <rspmn@...or.de>
Cc:     Bjørn Mork <bjorn@...k.no>, netdev@...r.kernel.org
Subject: Re: [PATCH 0/4] qmi_wwan: fix QMAP handling

Hi Reinhard,

Il giorno mer 12 giu 2019 alle ore 19:02 Reinhard Speyerer
<rspmn@...or.de> ha scritto:
>
> This series addresses the following issues observed when using the
> QMAP support of the qmi_wwan driver:
>
> 1. The QMAP code in the qmi_wwan driver is based on the CodeAurora
>    GobiNet driver ([1], [2]) which does not process QMAP padding
>    in the RX path correctly. This causes qmimux_rx_fixup() to pass
>    incorrect data to the IP stack when padding is used.
>
> 2. qmimux devices currently lack proper network device usage statistics.
>
> 3. RCU stalls on device disconnect with QMAP activated like this
>
>    # echo Y > /sys/class/net/wwan0/qmi/raw_ip
>    # echo 1 > /sys/class/net/wwan0/qmi/add_mux
>    # echo 2 > /sys/class/net/wwan0/qmi/add_mux
>    # echo 3 > /sys/class/net/wwan0/qmi/add_mux
>
>    have been observed in certain setups:
>
>    [ 2273.676593] option1 ttyUSB16: GSM modem (1-port) converter now disconnected from ttyUSB16
>    [ 2273.676617] option 6-1.2:1.0: device disconnected
>    [ 2273.676774] WARNING: CPU: 1 PID: 141 at kernel/rcu/tree_plugin.h:342 rcu_note_context_switch+0x2a/0x3d0
>    [ 2273.676776] Modules linked in: option qmi_wwan cdc_mbim cdc_ncm qcserial cdc_wdm usb_wwan sierra sierra_net usbnet mii edd coretemp iptable_mangle ip6_tables iptable_filter ip_tables cdc_acm dm_mod dax iTCO_wdt evdev iTCO_vendor_support sg ftdi_sio usbserial e1000e ptp pps_core i2c_i801 ehci_pci button lpc_ich i2c_core mfd_core uhci_hcd ehci_hcd rtc_cmos usbcore usb_common sd_mod fan ata_piix thermal
>    [ 2273.676817] CPU: 1 PID: 141 Comm: kworker/1:1 Not tainted 4.19.38-rsp-1 #1
>    [ 2273.676819] Hardware name: Not Applicable   Not Applicable  /CX-GS/GM45-GL40             , BIOS V1.11      03/23/2011
>    [ 2273.676828] Workqueue: usb_hub_wq hub_event [usbcore]
>    [ 2273.676832] EIP: rcu_note_context_switch+0x2a/0x3d0
>    [ 2273.676834] Code: 55 89 e5 57 56 89 c6 53 83 ec 14 89 45 f0 e8 5d ff ff ff 89 f0 64 8b 3d 24 a6 86 c0 84 c0 8b 87 04 02 00 00 75 7a 85 c0 7e 7a <0f> 0b 80 bf 08 02 00 00 00 0f 84 87 00 00 00 e8 b2 e2 ff ff bb dc
>    [ 2273.676836] EAX: 00000001 EBX: f614bc00 ECX: 00000001 EDX: c0715b81
>    [ 2273.676838] ESI: 00000000 EDI: f18beb40 EBP: f1a3dc20 ESP: f1a3dc00
>    [ 2273.676840] DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0068 EFLAGS: 00010002
>    [ 2273.676842] CR0: 80050033 CR2: b7e97230 CR3: 2f9c4000 CR4: 000406b0
>    [ 2273.676843] Call Trace:
>    [ 2273.676847]  ? preempt_count_add+0xa5/0xc0
>    [ 2273.676852]  __schedule+0x4e/0x4f0
>    [ 2273.676855]  ? __queue_work+0xf1/0x2a0
>    [ 2273.676858]  ? _raw_spin_lock_irqsave+0x14/0x40
>    [ 2273.676860]  ? preempt_count_add+0x52/0xc0
>    [ 2273.676862]  schedule+0x33/0x80
>    [ 2273.676865]  _synchronize_rcu_expedited+0x24e/0x280
>    [ 2273.676867]  ? rcu_accelerate_cbs_unlocked+0x70/0x70
>    [ 2273.676871]  ? wait_woken+0x70/0x70
>    [ 2273.676873]  ? rcu_accelerate_cbs_unlocked+0x70/0x70
>    [ 2273.676875]  ? _synchronize_rcu_expedited+0x280/0x280
>    [ 2273.676877]  synchronize_rcu_expedited+0x22/0x30
>    [ 2273.676881]  synchronize_net+0x25/0x30
>    [ 2273.676885]  dev_deactivate_many+0x133/0x230
>    [ 2273.676887]  ? preempt_count_add+0xa5/0xc0
>    [ 2273.676890]  __dev_close_many+0x4d/0xc0
>    [ 2273.676892]  ? skb_dequeue+0x40/0x50
>    [ 2273.676895]  dev_close_many+0x5d/0xd0
>    [ 2273.676898]  rollback_registered_many+0xbf/0x4c0
>    [ 2273.676901]  ? raw_notifier_call_chain+0x1a/0x20
>    [ 2273.676904]  ? call_netdevice_notifiers_info+0x23/0x60
>    [ 2273.676906]  ? netdev_master_upper_dev_get+0xe/0x70
>    [ 2273.676908]  rollback_registered+0x1f/0x30
>    [ 2273.676911]  unregister_netdevice_queue+0x47/0xb0
>    [ 2273.676915]  qmimux_unregister_device+0x1f/0x30 [qmi_wwan]
>    [ 2273.676917]  qmi_wwan_disconnect+0x5d/0x90 [qmi_wwan]
>    ...
>    [ 2273.677001] ---[ end trace 0fcc5f88496b485a ]---
>    [ 2294.679136] rcu: INFO: rcu_preempt detected stalls on CPUs/tasks:
>    [ 2294.679140] rcu:  Tasks blocked on level-0 rcu_node (CPUs 0-1): P141
>    [ 2294.679144] rcu:  (detected by 0, t=21002 jiffies, g=265857, q=8446)
>    [ 2294.679148] kworker/1:1     D    0   141      2 0x80000000
>
>
> In addition the permitted QMAP mux_id value range is extended for
> compatibility with ip(8) and the rmnet driver.
>
> Reinhard
>

I tested your patch-set with LM940 and it seems working properly.

If you think it is worth, the tag

Tested-by: Daniele Palmas <dnlplm@...il.com>

can be added.

By the way, not related to your patches, but I've received reports of
throughput tests with LM960
(dl-max-datagrams=32,dl-datagram-max-size=16384, single PDN, UDP)
reaching around 1.15 Gbps in downlink, so the driver seems to be
working pretty well. This, however, requires usbnet rx_urb_size to be
changed (currently I'm just modifying the parent network adapter MTU
to achieve this).

Thanks,
Daniele

> [1]: https://portland.source.codeaurora.org/patches/quic/gobi
> [2]: https://portland.source.codeaurora.org/quic/qsdk/oss/lklm/gobinet/
>
> Reinhard Speyerer (4):
>   qmi_wwan: add support for QMAP padding in the RX path
>   qmi_wwan: add network device usage statistics for qmimux devices
>   qmi_wwan: avoid RCU stalls on device disconnect when in QMAP mode
>   qmi_wwan: extend permitted QMAP mux_id value range
>
>  Documentation/ABI/testing/sysfs-class-net-qmi |   4 +-
>  drivers/net/usb/qmi_wwan.c                    | 103 ++++++++++++++++++++++----
>  2 files changed, 91 insertions(+), 16 deletions(-)
>
> --
> 2.11.0
>

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ