02 Nov, 2018

1 commit

  • Pull AFS updates from Al Viro:
    "AFS series, with some iov_iter bits included"

    * 'work.afs' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (26 commits)
    missing bits of "iov_iter: Separate type from direction and use accessor functions"
    afs: Probe multiple fileservers simultaneously
    afs: Fix callback handling
    afs: Eliminate the address pointer from the address list cursor
    afs: Allow dumping of server cursor on operation failure
    afs: Implement YFS support in the fs client
    afs: Expand data structure fields to support YFS
    afs: Get the target vnode in afs_rmdir() and get a callback on it
    afs: Calc callback expiry in op reply delivery
    afs: Fix FS.FetchStatus delivery from updating wrong vnode
    afs: Implement the YFS cache manager service
    afs: Remove callback details from afs_callback_break struct
    afs: Commit the status on a new file/dir/symlink
    afs: Increase to 64-bit volume ID and 96-bit vnode ID for YFS
    afs: Don't invoke the server to read data beyond EOF
    afs: Add a couple of tracepoints to log I/O errors
    afs: Handle EIO from delivery function
    afs: Fix TTL on VL server and address lists
    afs: Implement VL server rotation
    afs: Improve FS server rotation error handling
    ...

    Linus Torvalds
     

26 Oct, 2018

1 commit

  • Pull compat_ioctl fixes from Al Viro:
    "A bunch of compat_ioctl fixes, mostly in bluetooth.

    Hopefully, most of fs/compat_ioctl.c will get killed off over the next
    few cycles; between this, tty series already merged and Arnd's work
    this cycle ought to take a good chunk out of the damn thing..."

    * 'work.compat' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
    hidp: fix compat_ioctl
    hidp: constify hidp_connection_add()
    cmtp: fix compat_ioctl
    bnep: fix compat_ioctl
    compat_ioctl: trim the pointless includes

    Linus Torvalds
     

24 Oct, 2018

2 commits

  • Pull tty ioctl updates from Al Viro:
    "This is the compat_ioctl work related to tty ioctls.

    Quite a bit of dead code taken out, all tty-related stuff gone from
    fs/compat_ioctl.c. A bunch of compat bugs fixed - some still remain,
    but all more or less generic tty-related ioctls should be covered
    (remaining issues are in things like driver-private ioctls in a pcmcia
    serial card driver not getting properly handled in 32bit processes on
    64bit host, etc)"

    * 'work.tty-ioctl' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (53 commits)
    kill TIOCSERGSTRUCT
    change semantics of ldisc ->compat_ioctl()
    kill TIOCSER[SG]WILD
    synclink_gt(): fix compat_ioctl()
    pty: fix compat ioctls
    compat_ioctl - kill keyboard ioctl handling
    gigaset: add ->compat_ioctl()
    vt_compat_ioctl(): clean up, use compat_ptr() properly
    gigaset: don't try to printk userland buffer contents
    dgnc: don't bother with (empty) stub for TCXONC
    dgnc: leave TIOC[GS]SOFTCAR to ldisc
    remove fallback to drivers for TIOCGICOUNT
    dgnc: break-related ioctls won't reach ->ioctl()
    kill the rest of tty COMPAT_IOCTL() entries
    dgnc: TIOCM... won't reach ->ioctl()
    isdn_tty: TCSBRK{,P} won't reach ->ioctl()
    kill capinc_tty_ioctl()
    take compat TIOC[SG]SERIAL treatment into tty_compat_ioctl()
    synclink: reduce pointless checks in ->ioctl()
    complete ->[sg]et_serial() switchover
    ...

    Linus Torvalds
     
  • In the iov_iter struct, separate the iterator type from the iterator
    direction and use accessor functions to access them in most places.

    Convert a bunch of places to use switch-statements to access them rather
    then chains of bitwise-AND statements. This makes it easier to add further
    iterator types. Also, this can be more efficient as to implement a switch
    of small contiguous integers, the compiler can use ~50% fewer compare
    instructions than it has to use bitwise-and instructions.

    Further, cease passing the iterator type into the iterator setup function.
    The iterator function can set that itself. Only the direction is required.

    Signed-off-by: David Howells

    David Howells
     

14 Oct, 2018

3 commits

  • The check on status is redundant as a status has to be zero at
    the point it is being checked because of a previous check and return
    path via label 'unlock'. Remove the redundant check and the deadcode
    that can never be reached.

    Detected by CoverityScan, CID#1471710 ("Logically dead code")

    Signed-off-by: Colin Ian King
    Signed-off-by: Marcel Holtmann

    Colin Ian King
     
  • L2CAP: New result values
    0x0006 - Connection refused – Invalid Source CID
    0x0007 - Connection refused – Source CID already allocated

    As per the ESR08_V1.0.0, 1.11.2 Erratum 3253, Page No. 54,
    "Remote CID invalid Issue".
    Applies to Core Specification versions: V5.0, V4.2, v4.1, v4.0, and v3.0 + HS
    Vol 3, Part A, Section 4.2, 4.3, 4.14, 4.15.

    Core Specification Version 5.0, Page No.1753, Table 4.6 and
    Page No. 1767, Table 4.14

    New result values are added to l2cap connect/create channel response as
    0x0006 - Connection refused – Invalid Source CID
    0x0007 - Connection refused – Source CID already allocated

    Signed-off-by: Mallikarjun Phulari
    Signed-off-by: Marcel Holtmann

    Mallikarjun Phulari
     
  • Add the result values specific to L2CAP LE credit based connections
    and change the old result values wherever they were used.

    Signed-off-by: Mallikarjun Phulari
    Signed-off-by: Marcel Holtmann

    Mallikarjun Phulari
     

13 Oct, 2018

2 commits

  • Once upon a time a bunch of serial drivers used to provide that;
    today it's only amiserial and it's FUBAR - the structure being
    copied to userland includes kernel pointers, fields with
    config-dependent size, etc. No userland code using it could
    possibly survive - e.g. enabling lockdep definitely changes the
    layout. Besides, it's a massive infoleak.

    Kill it. If somebody needs that data for debugging purposes, they
    can bloody well expose it saner ways. Assuming anyone does debugging
    of amiserial in the first place, that is.

    Signed-off-by: Al Viro

    Al Viro
     
  • no support there

    Signed-off-by: Al Viro

    Al Viro
     

04 Oct, 2018

1 commit


29 Sep, 2018

1 commit

  • Fix crash caused by NULL pointer dereference when debugfs functions
    le_max_key_read, le_max_key_size_write, le_min_key_size_read or
    le_min_key_size_write and Bluetooth adapter was powered off.

    Fix is to move max_key_size and min_key_size from smp_dev to hci_dev.
    At the same time they were renamed to le_max_key_size and
    le_min_key_size.

    BUG: unable to handle kernel NULL pointer dereference at 00000000000002e8
    PGD 0 P4D 0
    Oops: 0000 [#24] SMP PTI
    CPU: 2 PID: 6255 Comm: cat Tainted: G D OE 4.18.9-200.fc28.x86_64 #1
    Hardware name: LENOVO 4286CTO/4286CTO, BIOS 8DET76WW (1.46 ) 06/21/2018
    RIP: 0010:le_max_key_size_read+0x45/0xb0 [bluetooth]
    Code: 00 00 00 48 83 ec 10 65 48 8b 04 25 28 00 00 00 48 89 44 24 08 31 c0 48 8b 87 c8 00 00 00 48 8d 7c 24 04 48 8b 80 48 0a 00 00 8b 80 e8 02 00 00 0f b6 48 52 e8 fb b6 b3 ed be 04 00 00 00 48
    RSP: 0018:ffffab23c3ff3df0 EFLAGS: 00010246
    RAX: 0000000000000000 RBX: 00007f0b4ca2e000 RCX: ffffab23c3ff3f08
    RDX: ffffffffc0ddb033 RSI: 0000000000000004 RDI: ffffab23c3ff3df4
    RBP: 0000000000020000 R08: 0000000000000000 R09: 0000000000000000
    R10: ffffab23c3ff3ed8 R11: 0000000000000000 R12: ffffab23c3ff3f08
    R13: 00007f0b4ca2e000 R14: 0000000000020000 R15: ffffab23c3ff3f08
    FS: 00007f0b4ca0f540(0000) GS:ffff91bd5e280000(0000) knlGS:0000000000000000
    CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 00000000000002e8 CR3: 00000000629fa006 CR4: 00000000000606e0
    Call Trace:
    full_proxy_read+0x53/0x80
    __vfs_read+0x36/0x180
    vfs_read+0x8a/0x140
    ksys_read+0x4f/0xb0
    do_syscall_64+0x5b/0x160
    entry_SYSCALL_64_after_hwframe+0x44/0xa9

    Signed-off-by: Matias Karhumaa
    Signed-off-by: Marcel Holtmann

    Matias Karhumaa
     

27 Sep, 2018

5 commits


26 Sep, 2018

1 commit

  • In case unpair_device() was called through mgmt interface at the same time
    when pairing was in progress, Bluetooth kernel module crash was seen.

    [ 600.351225] general protection fault: 0000 [#1] SMP PTI
    [ 600.351235] CPU: 1 PID: 11096 Comm: btmgmt Tainted: G OE 4.19.0-rc1+ #1
    [ 600.351238] Hardware name: Dell Inc. Latitude E5440/08RCYC, BIOS A18 05/14/2017
    [ 600.351272] RIP: 0010:smp_chan_destroy.isra.10+0xce/0x2c0 [bluetooth]
    [ 600.351276] Code: c0 0f 84 b4 01 00 00 80 78 28 04 0f 84 53 01 00 00 4d 85 ed 0f 85 ab 00 00 00 48 8b 08 48 8b 50 08 be 10 00 00 00 48 89 51 08 89 0a 48 b9 00 02 00 00 00 00 ad de 48 89 48 08 48 8b 83 00 01
    [ 600.351279] RSP: 0018:ffffa9be839b3b50 EFLAGS: 00010246
    [ 600.351282] RAX: ffff9c999ac565a0 RBX: ffff9c9996e98c00 RCX: ffff9c999aa28b60
    [ 600.351285] RDX: dead000000000200 RSI: 0000000000000010 RDI: ffff9c999e403500
    [ 600.351287] RBP: ffffa9be839b3b70 R08: 0000000000000000 R09: ffffffff92a25c00
    [ 600.351290] R10: ffffa9be839b3ae8 R11: 0000000000000001 R12: ffff9c995375b800
    [ 600.351292] R13: 0000000000000000 R14: ffff9c99619a5000 R15: ffff9c9962a01c00
    [ 600.351295] FS: 00007fb2be27c700(0000) GS:ffff9c999e880000(0000) knlGS:0000000000000000
    [ 600.351298] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [ 600.351300] CR2: 00007fb2bdadbad0 CR3: 000000041c328001 CR4: 00000000001606e0
    [ 600.351302] Call Trace:
    [ 600.351325] smp_failure+0x4f/0x70 [bluetooth]
    [ 600.351345] smp_cancel_pairing+0x74/0x80 [bluetooth]
    [ 600.351370] unpair_device+0x1c1/0x330 [bluetooth]
    [ 600.351399] hci_sock_sendmsg+0x960/0x9f0 [bluetooth]
    [ 600.351409] ? apparmor_socket_sendmsg+0x1e/0x20
    [ 600.351417] sock_sendmsg+0x3e/0x50
    [ 600.351422] sock_write_iter+0x85/0xf0
    [ 600.351429] do_iter_readv_writev+0x12b/0x1b0
    [ 600.351434] do_iter_write+0x87/0x1a0
    [ 600.351439] vfs_writev+0x98/0x110
    [ 600.351443] ? ep_poll+0x16d/0x3d0
    [ 600.351447] ? ep_modify+0x73/0x170
    [ 600.351451] do_writev+0x61/0xf0
    [ 600.351455] ? do_writev+0x61/0xf0
    [ 600.351460] __x64_sys_writev+0x1c/0x20
    [ 600.351465] do_syscall_64+0x5a/0x110
    [ 600.351471] entry_SYSCALL_64_after_hwframe+0x44/0xa9
    [ 600.351474] RIP: 0033:0x7fb2bdb62fe0
    [ 600.351477] Code: 73 01 c3 48 8b 0d b8 6e 2c 00 f7 d8 64 89 01 48 83 c8 ff c3 66 0f 1f 44 00 00 83 3d 69 c7 2c 00 00 75 10 b8 14 00 00 00 0f 05 3d 01 f0 ff ff 73 31 c3 48 83 ec 08 e8 de 80 01 00 48 89 04 24
    [ 600.351479] RSP: 002b:00007ffe062cb8f8 EFLAGS: 00000246 ORIG_RAX: 0000000000000014
    [ 600.351484] RAX: ffffffffffffffda RBX: 000000000255b3d0 RCX: 00007fb2bdb62fe0
    [ 600.351487] RDX: 0000000000000001 RSI: 00007ffe062cb920 RDI: 0000000000000004
    [ 600.351490] RBP: 00007ffe062cb920 R08: 000000000255bd80 R09: 0000000000000000
    [ 600.351494] R10: 0000000000000353 R11: 0000000000000246 R12: 0000000000000001
    [ 600.351497] R13: 00007ffe062cbbe0 R14: 0000000000000000 R15: 0000000000000000
    [ 600.351501] Modules linked in: algif_hash algif_skcipher af_alg cmac ipt_MASQUERADE nf_conntrack_netlink nfnetlink xfrm_user xfrm_algo iptable_nat nf_nat_ipv4 xt_addrtype iptable_filter ip_tables xt_conntrack x_tables nf_nat nf_conntrack nf_defrag_ipv6 nf_defrag_ipv4 libcrc32c br_netfilter bridge stp llc overlay arc4 nls_iso8859_1 dm_crypt intel_rapl x86_pkg_temp_thermal intel_powerclamp coretemp dell_laptop kvm_intel crct10dif_pclmul dell_smm_hwmon crc32_pclmul ghash_clmulni_intel pcbc aesni_intel aes_x86_64 crypto_simd cryptd glue_helper intel_cstate intel_rapl_perf uvcvideo videobuf2_vmalloc videobuf2_memops videobuf2_v4l2 videobuf2_common videodev media hid_multitouch input_leds joydev serio_raw dell_wmi snd_hda_codec_hdmi snd_hda_codec_realtek snd_hda_codec_generic dell_smbios dcdbas sparse_keymap
    [ 600.351569] snd_hda_intel btusb snd_hda_codec btrtl btbcm btintel snd_hda_core bluetooth(OE) snd_hwdep snd_pcm iwlmvm ecdh_generic wmi_bmof dell_wmi_descriptor snd_seq_midi mac80211 snd_seq_midi_event lpc_ich iwlwifi snd_rawmidi snd_seq snd_seq_device snd_timer cfg80211 snd soundcore mei_me mei dell_rbtn dell_smo8800 mac_hid parport_pc ppdev lp parport autofs4 hid_generic usbhid hid i915 nouveau kvmgt vfio_mdev mdev vfio_iommu_type1 vfio kvm irqbypass i2c_algo_bit ttm drm_kms_helper syscopyarea sysfillrect sysimgblt mxm_wmi psmouse ahci sdhci_pci cqhci libahci fb_sys_fops sdhci drm e1000e video wmi
    [ 600.351637] ---[ end trace e49e9f1df09c94fb ]---
    [ 600.351664] RIP: 0010:smp_chan_destroy.isra.10+0xce/0x2c0 [bluetooth]
    [ 600.351666] Code: c0 0f 84 b4 01 00 00 80 78 28 04 0f 84 53 01 00 00 4d 85 ed 0f 85 ab 00 00 00 48 8b 08 48 8b 50 08 be 10 00 00 00 48 89 51 08 89 0a 48 b9 00 02 00 00 00 00 ad de 48 89 48 08 48 8b 83 00 01
    [ 600.351669] RSP: 0018:ffffa9be839b3b50 EFLAGS: 00010246
    [ 600.351672] RAX: ffff9c999ac565a0 RBX: ffff9c9996e98c00 RCX: ffff9c999aa28b60
    [ 600.351674] RDX: dead000000000200 RSI: 0000000000000010 RDI: ffff9c999e403500
    [ 600.351676] RBP: ffffa9be839b3b70 R08: 0000000000000000 R09: ffffffff92a25c00
    [ 600.351679] R10: ffffa9be839b3ae8 R11: 0000000000000001 R12: ffff9c995375b800
    [ 600.351681] R13: 0000000000000000 R14: ffff9c99619a5000 R15: ffff9c9962a01c00
    [ 600.351684] FS: 00007fb2be27c700(0000) GS:ffff9c999e880000(0000) knlGS:0000000000000000
    [ 600.351686] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [ 600.351689] CR2: 00007fb2bdadbad0 CR3: 000000041c328001 CR4: 00000000001606e0

    Crash happened because list_del_rcu() was called twice for smp->ltk. This
    was possible if unpair_device was called right after ltk was generated
    but before keys were distributed.

    In this commit smp_cancel_pairing was refactored to cancel pairing if it
    is in progress and otherwise just removes keys. Once keys are removed from
    rcu list, pointers to smp context's keys are set to NULL to make sure
    removed list items are not accessed later.

    This commit also adjusts the functionality of mgmt unpair_device() little
    bit. Previously pairing was canceled only if pairing was in state that
    keys were already generated. With this commit unpair_device() cancels
    pairing already in earlier states.

    Bug was found by fuzzing kernel SMP implementation using Synopsys
    Defensics.

    Reported-by: Pekka Oikarainen
    Signed-off-by: Matias Karhumaa
    Signed-off-by: Johan Hedberg

    Matias Karhumaa
     

11 Sep, 2018

6 commits

  • In case local OOB data was generated and other device initiated pairing
    claiming that it has got OOB data, following crash occurred:

    [ 222.847853] general protection fault: 0000 [#1] SMP PTI
    [ 222.848025] CPU: 1 PID: 42 Comm: kworker/u5:0 Tainted: G C 4.18.0-custom #4
    [ 222.848158] Hardware name: innotek GmbH VirtualBox/VirtualBox, BIOS VirtualBox 12/01/2006
    [ 222.848307] Workqueue: hci0 hci_rx_work [bluetooth]
    [ 222.848416] RIP: 0010:compute_ecdh_secret+0x5a/0x270 [bluetooth]
    [ 222.848540] Code: 0c af f5 48 8b 3d 46 de f0 f6 ba 40 00 00 00 be c0 00 60 00 e8 b7 7b c5 f5 48 85 c0 0f 84 ea 01 00 00 48 89 c3 e8 16 0c af f5 8b 47 38 be c0 00 60 00 8b 78 f8 48 83 c7 48 e8 51 84 c5 f5 48
    [ 222.848914] RSP: 0018:ffffb1664087fbc0 EFLAGS: 00010293
    [ 222.849021] RAX: ffff8a5750d7dc00 RBX: ffff8a5671096780 RCX: ffffffffc08bc32a
    [ 222.849111] RDX: 0000000000000000 RSI: 00000000006000c0 RDI: ffff8a5752003800
    [ 222.849192] RBP: ffffb1664087fc60 R08: ffff8a57525280a0 R09: ffff8a5752003800
    [ 222.849269] R10: ffffb1664087fc70 R11: 0000000000000093 R12: ffff8a5674396e00
    [ 222.849350] R13: ffff8a574c2e79aa R14: ffff8a574c2e796a R15: 020e0e100d010101
    [ 222.849429] FS: 0000000000000000(0000) GS:ffff8a5752500000(0000) knlGS:0000000000000000
    [ 222.849518] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [ 222.849586] CR2: 000055856016a038 CR3: 0000000110d2c005 CR4: 00000000000606e0
    [ 222.849671] Call Trace:
    [ 222.849745] ? sc_send_public_key+0x110/0x2a0 [bluetooth]
    [ 222.849825] ? sc_send_public_key+0x115/0x2a0 [bluetooth]
    [ 222.849925] smp_recv_cb+0x959/0x2490 [bluetooth]
    [ 222.850023] ? _cond_resched+0x19/0x40
    [ 222.850105] ? mutex_lock+0x12/0x40
    [ 222.850202] l2cap_recv_frame+0x109d/0x3420 [bluetooth]
    [ 222.850315] ? l2cap_recv_frame+0x109d/0x3420 [bluetooth]
    [ 222.850426] ? __switch_to_asm+0x34/0x70
    [ 222.850515] ? __switch_to_asm+0x40/0x70
    [ 222.850625] ? __switch_to_asm+0x34/0x70
    [ 222.850724] ? __switch_to_asm+0x40/0x70
    [ 222.850786] ? __switch_to_asm+0x34/0x70
    [ 222.850846] ? __switch_to_asm+0x40/0x70
    [ 222.852581] ? __switch_to_asm+0x34/0x70
    [ 222.854976] ? __switch_to_asm+0x40/0x70
    [ 222.857475] ? __switch_to_asm+0x40/0x70
    [ 222.859775] ? __switch_to_asm+0x34/0x70
    [ 222.861218] ? __switch_to_asm+0x40/0x70
    [ 222.862327] ? __switch_to_asm+0x34/0x70
    [ 222.863758] l2cap_recv_acldata+0x266/0x3c0 [bluetooth]
    [ 222.865122] hci_rx_work+0x1c9/0x430 [bluetooth]
    [ 222.867144] process_one_work+0x210/0x4c0
    [ 222.868248] worker_thread+0x41/0x4d0
    [ 222.869420] kthread+0x141/0x160
    [ 222.870694] ? process_one_work+0x4c0/0x4c0
    [ 222.871668] ? kthread_create_worker_on_cpu+0x90/0x90
    [ 222.872896] ret_from_fork+0x35/0x40
    [ 222.874132] Modules linked in: algif_hash algif_skcipher af_alg rfcomm bnep btusb btrtl btbcm btintel snd_intel8x0 cmac intel_rapl_perf vboxvideo(C) snd_ac97_codec bluetooth ac97_bus joydev ttm snd_pcm ecdh_generic drm_kms_helper snd_timer snd input_leds drm serio_raw fb_sys_fops soundcore syscopyarea sysfillrect sysimgblt mac_hid sch_fq_codel ib_iser rdma_cm iw_cm ib_cm ib_core iscsi_tcp libiscsi_tcp libiscsi scsi_transport_iscsi ip_tables x_tables autofs4 btrfs zstd_compress raid10 raid456 async_raid6_recov async_memcpy async_pq async_xor async_tx xor raid6_pq libcrc32c raid1 raid0 multipath linear hid_generic usbhid hid crct10dif_pclmul crc32_pclmul ghash_clmulni_intel pcbc aesni_intel aes_x86_64 crypto_simd cryptd glue_helper ahci psmouse libahci i2c_piix4 video e1000 pata_acpi
    [ 222.883153] fbcon_switch: detected unhandled fb_set_par error, error code -16
    [ 222.886774] fbcon_switch: detected unhandled fb_set_par error, error code -16
    [ 222.890503] ---[ end trace 6504aa7a777b5316 ]---
    [ 222.890541] RIP: 0010:compute_ecdh_secret+0x5a/0x270 [bluetooth]
    [ 222.890551] Code: 0c af f5 48 8b 3d 46 de f0 f6 ba 40 00 00 00 be c0 00 60 00 e8 b7 7b c5 f5 48 85 c0 0f 84 ea 01 00 00 48 89 c3 e8 16 0c af f5 8b 47 38 be c0 00 60 00 8b 78 f8 48 83 c7 48 e8 51 84 c5 f5 48
    [ 222.890555] RSP: 0018:ffffb1664087fbc0 EFLAGS: 00010293
    [ 222.890561] RAX: ffff8a5750d7dc00 RBX: ffff8a5671096780 RCX: ffffffffc08bc32a
    [ 222.890565] RDX: 0000000000000000 RSI: 00000000006000c0 RDI: ffff8a5752003800
    [ 222.890571] RBP: ffffb1664087fc60 R08: ffff8a57525280a0 R09: ffff8a5752003800
    [ 222.890576] R10: ffffb1664087fc70 R11: 0000000000000093 R12: ffff8a5674396e00
    [ 222.890581] R13: ffff8a574c2e79aa R14: ffff8a574c2e796a R15: 020e0e100d010101
    [ 222.890586] FS: 0000000000000000(0000) GS:ffff8a5752500000(0000) knlGS:0000000000000000
    [ 222.890591] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [ 222.890594] CR2: 000055856016a038 CR3: 0000000110d2c005 CR4: 00000000000606e0

    This commit fixes a bug where invalid pointer to crypto tfm was used for
    SMP SC ECDH calculation when OOB was in use. Solution is to use same
    crypto tfm than when generating OOB material on generate_oob() function.

    This bug was introduced in commit c0153b0b901a ("Bluetooth: let the crypto
    subsystem generate the ecc privkey"). Bug was found by fuzzing kernel SMP
    implementation using Synopsys Defensics.

    Signed-off-by: Matias Karhumaa
    Signed-off-by: Johan Hedberg
    Signed-off-by: Marcel Holtmann

    Matias Karhumaa
     
  • A remote device may claim that it has received our OOB data, even
    though we never geneated it. Add a new flag to track whether we
    actually have OOB data, and ignore the remote peer's flag if haven't
    generated OOB data.

    Signed-off-by: Johan Hedberg
    Signed-off-by: Marcel Holtmann

    Johan Hedberg
     
  • 1) no point putting it into fs/compat_ioctl.c when you handle it in
    your ->compat_ioctl() anyway.
    2) HIDPCONNADD is *not* COMPATIBLE_IOCTL() stuff at all - it does
    layout massage (pointer-chasing there)
    3) use compat_ptr()

    Signed-off-by: Al Viro

    Al Viro
     
  • Signed-off-by: Al Viro

    Al Viro
     
  • Use compat_ptr(). And don't mess with fs/compat_ioctl.c

    Signed-off-by: Al Viro

    Al Viro
     
  • use compat_ptr() properly and don't bother with fs/compat_ioctl.c -
    it's all handled in ->compat_ioctl() anyway.

    Signed-off-by: Al Viro

    Al Viro
     

16 Aug, 2018

1 commit

  • Pull networking updates from David Miller:
    "Highlights:

    - Gustavo A. R. Silva keeps working on the implicit switch fallthru
    changes.

    - Support 802.11ax High-Efficiency wireless in cfg80211 et al, From
    Luca Coelho.

    - Re-enable ASPM in r8169, from Kai-Heng Feng.

    - Add virtual XFRM interfaces, which avoids all of the limitations of
    existing IPSEC tunnels. From Steffen Klassert.

    - Convert GRO over to use a hash table, so that when we have many
    flows active we don't traverse a long list during accumluation.

    - Many new self tests for routing, TC, tunnels, etc. Too many
    contributors to mention them all, but I'm really happy to keep
    seeing this stuff.

    - Hardware timestamping support for dpaa_eth/fsl-fman from Yangbo Lu.

    - Lots of cleanups and fixes in L2TP code from Guillaume Nault.

    - Add IPSEC offload support to netdevsim, from Shannon Nelson.

    - Add support for slotting with non-uniform distribution to netem
    packet scheduler, from Yousuk Seung.

    - Add UDP GSO support to mlx5e, from Boris Pismenny.

    - Support offloading of Team LAG in NFP, from John Hurley.

    - Allow to configure TX queue selection based upon RX queue, from
    Amritha Nambiar.

    - Support ethtool ring size configuration in aquantia, from Anton
    Mikaev.

    - Support DSCP and flowlabel per-transport in SCTP, from Xin Long.

    - Support list based batching and stack traversal of SKBs, this is
    very exciting work. From Edward Cree.

    - Busyloop optimizations in vhost_net, from Toshiaki Makita.

    - Introduce the ETF qdisc, which allows time based transmissions. IGB
    can offload this in hardware. From Vinicius Costa Gomes.

    - Add parameter support to devlink, from Moshe Shemesh.

    - Several multiplication and division optimizations for BPF JIT in
    nfp driver, from Jiong Wang.

    - Lots of prepatory work to make more of the packet scheduler layer
    lockless, when possible, from Vlad Buslov.

    - Add ACK filter and NAT awareness to sch_cake packet scheduler, from
    Toke Høiland-Jørgensen.

    - Support regions and region snapshots in devlink, from Alex Vesker.

    - Allow to attach XDP programs to both HW and SW at the same time on
    a given device, with initial support in nfp. From Jakub Kicinski.

    - Add TLS RX offload and support in mlx5, from Ilya Lesokhin.

    - Use PHYLIB in r8169 driver, from Heiner Kallweit.

    - All sorts of changes to support Spectrum 2 in mlxsw driver, from
    Ido Schimmel.

    - PTP support in mv88e6xxx DSA driver, from Andrew Lunn.

    - Make TCP_USER_TIMEOUT socket option more accurate, from Jon
    Maxwell.

    - Support for templates in packet scheduler classifier, from Jiri
    Pirko.

    - IPV6 support in RDS, from Ka-Cheong Poon.

    - Native tproxy support in nf_tables, from Máté Eckl.

    - Maintain IP fragment queue in an rbtree, but optimize properly for
    in-order frags. From Peter Oskolkov.

    - Improvde handling of ACKs on hole repairs, from Yuchung Cheng"

    * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next: (1996 commits)
    bpf: test: fix spelling mistake "REUSEEPORT" -> "REUSEPORT"
    hv/netvsc: Fix NULL dereference at single queue mode fallback
    net: filter: mark expected switch fall-through
    xen-netfront: fix warn message as irq device name has '/'
    cxgb4: Add new T5 PCI device ids 0x50af and 0x50b0
    net: dsa: mv88e6xxx: missing unlock on error path
    rds: fix building with IPV6=m
    inet/connection_sock: prefer _THIS_IP_ to current_text_addr
    net: dsa: mv88e6xxx: bitwise vs logical bug
    net: sock_diag: Fix spectre v1 gadget in __sock_diag_cmd()
    ieee802154: hwsim: using right kind of iteration
    net: hns3: Add vlan filter setting by ethtool command -K
    net: hns3: Set tx ring' tc info when netdev is up
    net: hns3: Remove tx ring BD len register in hns3_enet
    net: hns3: Fix desc num set to default when setting channel
    net: hns3: Fix for phy link issue when using marvell phy driver
    net: hns3: Fix for information of phydev lost problem when down/up
    net: hns3: Fix for command format parsing error in hclge_is_all_function_id_zero
    net: hns3: Add support for serdes loopback selftest
    bnxt_en: take coredump_record structure off stack
    ...

    Linus Torvalds
     

15 Aug, 2018

1 commit

  • ….anaszewski/linux-leds

    Pull LED updates from Jacek Anaszewski:
    "LED triggers improvements make the biggest part of this pull request.
    The most striking ones, that allowed for nice cleanups in the triggers
    are:

    - centralized handling of creation and removal of trigger sysfs
    attributes via attribute group

    - addition of module_led_trigger() helper

    The other things that need to be mentioned:

    New features and improvements to existing LED class drivers:

    - lt3593: add DT support, switch to gpiod interface

    - lm3692x: support LED sync configuration, change OF calls to fwnode
    calls

    - apu: modify PC Engines apu/apu2 driver to support apu3

    Change in the drivers/net/can/led.c:

    - mark led trigger as broken since it's in the way for the further
    cleanups. It implements a subset of the netdev trigger and an Ack
    is needed from someone who can actually test and confirm that the
    netdev trigger works for can devices"

    * tag 'leds-for-4.19-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/j.anaszewski/linux-leds: (32 commits)
    leds: ns2: Change unsigned to unsigned int
    usb: simplify usbport trigger
    leds: gpio trigger: simplifications from core changes
    leds: backlight trigger: simplifications from core changes
    leds: activity trigger: simplifications from core changes
    leds: default-on trigger: make use of module_led_trigger()
    leds: heartbeat trigger: simplifications from core changes
    leds: oneshot trigger: simplifications from core changes
    leds: transient trigger: simplifications from core changes
    leds: timer trigger: simplifications from core changes
    leds: netdev trigger: simplifications from core changes
    leds: triggers: new function led_set_trigger_data()
    leds: triggers: define module_led_trigger helper
    leds: triggers: handle .trigger_data and .activated() in the core
    leds: triggers: add device attribute support
    leds: triggers: let struct led_trigger::activate() return an error code
    leds: triggers: make the MODULE_LICENSE string match the actual license
    leds: lm3692x: Support LED sync configuration
    dt: bindings: lm3692x: Update binding for LED sync control
    leds: lm3692x: Change DT calls to fwnode calls
    ...

    Linus Torvalds
     

10 Aug, 2018

1 commit


06 Aug, 2018

1 commit

  • Variables 'adv_set' and 'cp' are being assigned but are never used hence
    they are redundant and can be removed.

    Cleans up clang warnings:
    net/bluetooth/hci_event.c:1135:29: warning: variable 'adv_set' set but not used [-Wunused-but-set-variable]
    net/bluetooth/mgmt.c:3359:39: warning: variable 'cp' set but not used [-Wunused-but-set-variable]

    Signed-off-by: YueHaibing
    Signed-off-by: Johan Hedberg

    YueHaibing
     

01 Aug, 2018

1 commit

  • CVE-2018-9363

    The buffer length is unsigned at all layers, but gets cast to int and
    checked in hidp_process_report and can lead to a buffer overflow.
    Switch len parameter to unsigned int to resolve issue.

    This affects 3.18 and newer kernels.

    Signed-off-by: Mark Salyzyn
    Fixes: a4b1b5877b514b276f0f31efe02388a9c2836728 ("HID: Bluetooth: hidp: make sure input buffers are big enough")
    Cc: Marcel Holtmann
    Cc: Johan Hedberg
    Cc: "David S. Miller"
    Cc: Kees Cook
    Cc: Benjamin Tissoires
    Cc: linux-bluetooth@vger.kernel.org
    Cc: netdev@vger.kernel.org
    Cc: linux-kernel@vger.kernel.org
    Cc: security@kernel.org
    Cc: kernel-team@android.com
    Acked-by: Kees Cook
    Signed-off-by: Marcel Holtmann

    Mark Salyzyn
     

30 Jul, 2018

12 commits

  • This fixes two issues with setting hid->name information.

    CC net/bluetooth/hidp/core.o
    In function ‘hidp_setup_hid’,
    inlined from ‘hidp_session_dev_init’ at net/bluetooth/hidp/core.c:815:9,
    inlined from ‘hidp_session_new’ at net/bluetooth/hidp/core.c:953:8,
    inlined from ‘hidp_connection_add’ at net/bluetooth/hidp/core.c:1366:8:
    net/bluetooth/hidp/core.c:778:2: warning: ‘strncpy’ output may be truncated copying 127 bytes from a string of length 127 [-Wstringop-truncation]
    strncpy(hid->name, req->name, sizeof(req->name) - 1);
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    CC net/bluetooth/hidp/core.o
    net/bluetooth/hidp/core.c: In function ‘hidp_setup_hid’:
    net/bluetooth/hidp/core.c:778:38: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
    strncpy(hid->name, req->name, sizeof(req->name));
    ^

    Signed-off-by: Marcel Holtmann
    Signed-off-by: Johan Hedberg

    Marcel Holtmann
     
  • Add a new quirk HCI_QUIRK_NON_PERSISTENT_SETUP allowing that a quirk that
    runs setup() after every open() and not just after the first open().

    Signed-off-by: Sean Wang
    Signed-off-by: Marcel Holtmann

    Sean Wang
     
  • This patch adds support for advertising in primary and secondary
    channel on different PHYs. User can add the phy preference in
    the flag based on which phy type will be added in extended
    advertising parameter would be set.

    @ MGMT Command: Add Advertising (0x003e) plen 11
    Instance: 1
    Flags: 0x00000200
    Advertise in CODED on Secondary channel
    Duration: 0
    Timeout: 0
    Advertising data length: 0
    Scan response length: 0
    < HCI Command: LE Set Extended Advertising Enable (0x08|0x0039) plen 2
    Extended advertising: Disabled (0x00)
    Number of sets: Disable all sets (0x00)
    > HCI Event: Command Complete (0x0e) plen 4
    LE Set Extended Advertising Enable (0x08|0x0039) ncmd 2
    Status: Success (0x00)
    < HCI Command: LE Set Extended Advertising Parameters (0x08|0x0036) plen 25
    Handle: 0x00
    Properties: 0x0000
    Min advertising interval: 1280.000 msec (0x0800)
    Max advertising interval: 1280.000 msec (0x0800)
    Channel map: 37, 38, 39 (0x07)
    Own address type: Random (0x01)
    Peer address type: Public (0x00)
    Peer address: 00:00:00:00:00:00 (OUI 00-00-00)
    Filter policy: Allow Scan Request from Any, Allow Connect Request from Any (0x00)
    TX power: 127 dbm (0x7f)
    Primary PHY: LE Coded (0x03)
    Secondary max skip: 0x00
    Secondary PHY: LE Coded (0x03)
    SID: 0x00
    Scan request notifications: Disabled (0x00)

    Signed-off-by: Jaganath Kanakkassery
    Signed-off-by: Marcel Holtmann

    Jaganath Kanakkassery
     
  • This event comes after connection complete event for incoming
    connections. Since we now have different random address for
    each instance, conn resp address is assigned from this event.

    As of now only connection part is handled as we are not
    enabling duration or max num of events while starting ext adv.

    Signed-off-by: Jaganath Kanakkassery
    Signed-off-by: Marcel Holtmann

    Jaganath Kanakkassery
     
  • This basically sets the random address for the adv instance
    Random address can be set only if the instance is created which
    is done in Set ext adv param.

    Random address and rpa expire timer and flags have been added
    to adv instance which will be used when the respective
    instance is scheduled.

    This introduces a hci_get_random_address() which returns the
    own address type and random address (rpa or nrpa) based
    on the instance flags and hdev flags. New function is required
    since own address type should be known before setting adv params
    but address can be set only after setting params.

    < HCI Command: LE Set Advertising Set Random Address (0x08|0x0035) plen 7
    Advertising handle: 0x00
    Advertising random address: 3C:8E:56:9B:77:84 (OUI 3C-8E-56)
    > HCI Event: Command Complete (0x0e) plen 4
    LE Set Advertising Set Random Address (0x08|0x0035) ncmd 1
    Status: Success (0x00)

    Signed-off-by: Jaganath Kanakkassery
    Signed-off-by: Marcel Holtmann

    Jaganath Kanakkassery
     
  • This patch does extended advertising for directed advertising
    if the controller supportes. Instance 0 is used for directed
    advertising.

    Signed-off-by: Jaganath Kanakkassery
    Signed-off-by: Marcel Holtmann

    Jaganath Kanakkassery
     
  • If ext adv is enabled then use ext adv to disable as well.
    Also remove the adv set during LE disable.

    < HCI Command: LE Set Extended Advertising Enable (0x08|0x0039) plen 2
    Extended advertising: Disabled (0x00)
    Number of sets: Disable all sets (0x00)
    > HCI Event: Command Complete (0x0e) plen 4
    LE Set Extended Advertising Enable (0x08|0x0039) ncmd 2
    Status: Success (0x00)

    Signed-off-by: Jaganath Kanakkassery
    Signed-off-by: Marcel Holtmann

    Jaganath Kanakkassery
     
  • This patch implements Set Ext Adv data and Set Ext Scan rsp data
    if controller support extended advertising.

    Currently the operation is set as Complete data and fragment
    preference is set as no fragment

    < HCI Command: LE Set Extended Advertising Data (0x08|0x0037) plen 35
    Handle: 0x00
    Operation: Complete extended advertising data (0x03)
    Fragment preference: Minimize fragmentation (0x01)
    Data length: 0x15
    16-bit Service UUIDs (complete): 2 entries
    Heart Rate (0x180d)
    Battery Service (0x180f)
    Name (complete): Test LE
    Company: Google (224)
    Data: 0102
    > HCI Event: Command Complete (0x0e) plen 4
    LE Set Extended Advertising Data (0x08|0x0037) ncmd 1
    Status: Success (0x00)

    Signed-off-by: Jaganath Kanakkassery
    Signed-off-by: Marcel Holtmann

    Jaganath Kanakkassery
     
  • This patch basically replaces legacy adv with extended adv
    based on the controller support. Currently there is no
    design change. ie only one adv set will be enabled at a time.

    This also adds tx_power in instance and store whatever returns
    from Set_ext_parameter, use the same in adv data as well.
    For instance 0 tx_power is stored in hdev only.

    < HCI Command: LE Set Extended Advertising Parameters (0x08|0x0036) plen 25
    Handle: 0x00
    Properties: 0x0010
    Use legacy advertising PDUs: ADV_NONCONN_IND
    Min advertising interval: 1280.000 msec (0x0800)
    Max advertising interval: 1280.000 msec (0x0800)
    Channel map: 37, 38, 39 (0x07)
    Own address type: Random (0x01)
    Peer address type: Public (0x00)
    Peer address: 00:00:00:00:00:00 (OUI 00-00-00)
    Filter policy: Allow Scan Request from Any, Allow Connect Request from Any (0x00)
    TX power: 127 dbm (0x7f)
    Primary PHY: LE 1M (0x01)
    Secondary max skip: 0x00
    Secondary PHY: LE 1M (0x01)
    SID: 0x00
    Scan request notifications: Disabled (0x00)
    > HCI Event: Command Complete (0x0e) plen 5
    LE Set Extended Advertising Parameters (0x08|0x0036) ncmd 1
    Status: Success (0x00)
    TX power (selected): 7 dbm (0x07)
    < HCI Command: LE Set Extended Advertising Enable (0x08|0x0039) plen 6
    Extended advertising: Enabled (0x01)
    Number of sets: 1 (0x01)
    Entry 0
    Handle: 0x00
    Duration: 0 ms (0x00)
    Max ext adv events: 0
    > HCI Event: Command Complete (0x0e) plen 4
    LE Set Extended Advertising Enable (0x08|0x0039) ncmd 2
    Status: Success (0x00)

    Signed-off-by: Jaganath Kanakkassery
    Signed-off-by: Marcel Holtmann

    Jaganath Kanakkassery
     
  • This patch reads the number of advertising sets in the controller
    during init and save it in hdev.

    Signed-off-by: Jaganath Kanakkassery
    Signed-off-by: Marcel Holtmann

    Jaganath Kanakkassery
     
  • Use the selected PHYs by Set PHY Configuration management command
    in extended create connection.

    Signed-off-by: Jaganath Kanakkassery
    Signed-off-by: Marcel Holtmann

    Jaganath Kanakkassery
     
  • This patch defines the extended ADV types and handle it in ADV report.

    Signed-off-by: Jaganath Kanakkassery
    Signed-off-by: Marcel Holtmann

    Jaganath Kanakkassery