08 May, 2019

1 commit

  • Pull networking updates from David Miller:
    "Highlights:

    1) Support AES128-CCM ciphers in kTLS, from Vakul Garg.

    2) Add fib_sync_mem to control the amount of dirty memory we allow to
    queue up between synchronize RCU calls, from David Ahern.

    3) Make flow classifier more lockless, from Vlad Buslov.

    4) Add PHY downshift support to aquantia driver, from Heiner
    Kallweit.

    5) Add SKB cache for TCP rx and tx, from Eric Dumazet. This reduces
    contention on SLAB spinlocks in heavy RPC workloads.

    6) Partial GSO offload support in XFRM, from Boris Pismenny.

    7) Add fast link down support to ethtool, from Heiner Kallweit.

    8) Use siphash for IP ID generator, from Eric Dumazet.

    9) Pull nexthops even further out from ipv4/ipv6 routes and FIB
    entries, from David Ahern.

    10) Move skb->xmit_more into a per-cpu variable, from Florian
    Westphal.

    11) Improve eBPF verifier speed and increase maximum program size,
    from Alexei Starovoitov.

    12) Eliminate per-bucket spinlocks in rhashtable, and instead use bit
    spinlocks. From Neil Brown.

    13) Allow tunneling with GUE encap in ipvs, from Jacky Hu.

    14) Improve link partner cap detection in generic PHY code, from
    Heiner Kallweit.

    15) Add layer 2 encap support to bpf_skb_adjust_room(), from Alan
    Maguire.

    16) Remove SKB list implementation assumptions in SCTP, your's truly.

    17) Various cleanups, optimizations, and simplifications in r8169
    driver. From Heiner Kallweit.

    18) Add memory accounting on TX and RX path of SCTP, from Xin Long.

    19) Switch PHY drivers over to use dynamic featue detection, from
    Heiner Kallweit.

    20) Support flow steering without masking in dpaa2-eth, from Ioana
    Ciocoi.

    21) Implement ndo_get_devlink_port in netdevsim driver, from Jiri
    Pirko.

    22) Increase the strict parsing of current and future netlink
    attributes, also export such policies to userspace. From Johannes
    Berg.

    23) Allow DSA tag drivers to be modular, from Andrew Lunn.

    24) Remove legacy DSA probing support, also from Andrew Lunn.

    25) Allow ll_temac driver to be used on non-x86 platforms, from Esben
    Haabendal.

    26) Add a generic tracepoint for TX queue timeouts to ease debugging,
    from Cong Wang.

    27) More indirect call optimizations, from Paolo Abeni"

    * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next: (1763 commits)
    cxgb4: Fix error path in cxgb4_init_module
    net: phy: improve pause mode reporting in phy_print_status
    dt-bindings: net: Fix a typo in the phy-mode list for ethernet bindings
    net: macb: Change interrupt and napi enable order in open
    net: ll_temac: Improve error message on error IRQ
    net/sched: remove block pointer from common offload structure
    net: ethernet: support of_get_mac_address new ERR_PTR error
    net: usb: smsc: fix warning reported by kbuild test robot
    staging: octeon-ethernet: Fix of_get_mac_address ERR_PTR check
    net: dsa: support of_get_mac_address new ERR_PTR error
    net: dsa: sja1105: Fix status initialization in sja1105_get_ethtool_stats
    vrf: sit mtu should not be updated when vrf netdev is the link
    net: dsa: Fix error cleanup path in dsa_init_module
    l2tp: Fix possible NULL pointer dereference
    taprio: add null check on sched_nest to avoid potential null pointer dereference
    net: mvpp2: cls: fix less than zero check on a u32 variable
    net_sched: sch_fq: handle non connected flows
    net_sched: sch_fq: do not assume EDT packets are ordered
    net: hns3: use devm_kcalloc when allocating desc_cb
    net: hns3: some cleanup for struct hns3_enet_ring
    ...

    Linus Torvalds
     

07 May, 2019

1 commit

  • Pull crypto update from Herbert Xu:
    "API:
    - Add support for AEAD in simd
    - Add fuzz testing to testmgr
    - Add panic_on_fail module parameter to testmgr
    - Use per-CPU struct instead multiple variables in scompress
    - Change verify API for akcipher

    Algorithms:
    - Convert x86 AEAD algorithms over to simd
    - Forbid 2-key 3DES in FIPS mode
    - Add EC-RDSA (GOST 34.10) algorithm

    Drivers:
    - Set output IV with ctr-aes in crypto4xx
    - Set output IV in rockchip
    - Fix potential length overflow with hashing in sun4i-ss
    - Fix computation error with ctr in vmx
    - Add SM4 protected keys support in ccree
    - Remove long-broken mxc-scc driver
    - Add rfc4106(gcm(aes)) cipher support in cavium/nitrox"

    * 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6: (179 commits)
    crypto: ccree - use a proper le32 type for le32 val
    crypto: ccree - remove set but not used variable 'du_size'
    crypto: ccree - Make cc_sec_disable static
    crypto: ccree - fix spelling mistake "protedcted" -> "protected"
    crypto: caam/qi2 - generate hash keys in-place
    crypto: caam/qi2 - fix DMA mapping of stack memory
    crypto: caam/qi2 - fix zero-length buffer DMA mapping
    crypto: stm32/cryp - update to return iv_out
    crypto: stm32/cryp - remove request mutex protection
    crypto: stm32/cryp - add weak key check for DES
    crypto: atmel - remove set but not used variable 'alg_name'
    crypto: picoxcell - Use dev_get_drvdata()
    crypto: crypto4xx - get rid of redundant using_sd variable
    crypto: crypto4xx - use sync skcipher for fallback
    crypto: crypto4xx - fix cfb and ofb "overran dst buffer" issues
    crypto: crypto4xx - fix ctr-aes missing output IV
    crypto: ecrdsa - select ASN1 and OID_REGISTRY for EC-RDSA
    crypto: ux500 - use ccflags-y instead of CFLAGS_.o
    crypto: ccree - handle tee fips error during power management resume
    crypto: ccree - add function to handle cryptocell tee fips error
    ...

    Linus Torvalds
     

06 May, 2019

1 commit

  • This commit makes the kernel not send the next queued HCI command until
    a command complete arrives for the last HCI command sent to the
    controller. This change avoids a problem with some buggy controllers
    (seen on two SKUs of QCA9377) that send an extra command complete event
    for the previous command after the kernel had already sent a new HCI
    command to the controller.

    The problem was reproduced when starting an active scanning procedure,
    where an extra command complete event arrives for the LE_SET_RANDOM_ADDR
    command. When this happends the kernel ends up not processing the
    command complete for the following commmand, LE_SET_SCAN_PARAM, and
    ultimately behaving as if a passive scanning procedure was being
    performed, when in fact controller is performing an active scanning
    procedure. This makes it impossible to discover BLE devices as no device
    found events are sent to userspace.

    This problem is reproducible on 100% of the attempts on the affected
    controllers. The extra command complete event can be seen at timestamp
    27.420131 on the btmon logs bellow.

    Bluetooth monitor ver 5.50
    = Note: Linux version 5.0.0+ (x86_64) 0.352340
    = Note: Bluetooth subsystem version 2.22 0.352343
    = New Index: 80:C5:F2:8F:87:84 (Primary,USB,hci0) [hci0] 0.352344
    = Open Index: 80:C5:F2:8F:87:84 [hci0] 0.352345
    = Index Info: 80:C5:F2:8F:87:84 (Qualcomm) [hci0] 0.352346
    @ MGMT Open: bluetoothd (privileged) version 1.14 {0x0001} 0.352347
    @ MGMT Open: btmon (privileged) version 1.14 {0x0002} 0.352366
    @ MGMT Open: btmgmt (privileged) version 1.14 {0x0003} 27.302164
    @ MGMT Command: Start Discovery (0x0023) plen 1 {0x0003} [hci0] 27.302310
    Address type: 0x06
    LE Public
    LE Random
    < HCI Command: LE Set Random Address (0x08|0x0005) plen 6 #1 [hci0] 27.302496
    Address: 15:60:F2:91:B2:24 (Non-Resolvable)
    > HCI Event: Command Complete (0x0e) plen 4 #2 [hci0] 27.419117
    LE Set Random Address (0x08|0x0005) ncmd 1
    Status: Success (0x00)
    < HCI Command: LE Set Scan Parameters (0x08|0x000b) plen 7 #3 [hci0] 27.419244
    Type: Active (0x01)
    Interval: 11.250 msec (0x0012)
    Window: 11.250 msec (0x0012)
    Own address type: Random (0x01)
    Filter policy: Accept all advertisement (0x00)
    > HCI Event: Command Complete (0x0e) plen 4 #4 [hci0] 27.420131
    LE Set Random Address (0x08|0x0005) ncmd 1
    Status: Success (0x00)
    < HCI Command: LE Set Scan Enable (0x08|0x000c) plen 2 #5 [hci0] 27.420259
    Scanning: Enabled (0x01)
    Filter duplicates: Enabled (0x01)
    > HCI Event: Command Complete (0x0e) plen 4 #6 [hci0] 27.420969
    LE Set Scan Parameters (0x08|0x000b) ncmd 1
    Status: Success (0x00)
    > HCI Event: Command Complete (0x0e) plen 4 #7 [hci0] 27.421983
    LE Set Scan Enable (0x08|0x000c) ncmd 1
    Status: Success (0x00)
    @ MGMT Event: Command Complete (0x0001) plen 4 {0x0003} [hci0] 27.422059
    Start Discovery (0x0023) plen 1
    Status: Success (0x00)
    Address type: 0x06
    LE Public
    LE Random
    @ MGMT Event: Discovering (0x0013) plen 2 {0x0003} [hci0] 27.422067
    Address type: 0x06
    LE Public
    LE Random
    Discovery: Enabled (0x01)
    @ MGMT Event: Discovering (0x0013) plen 2 {0x0002} [hci0] 27.422067
    Address type: 0x06
    LE Public
    LE Random
    Discovery: Enabled (0x01)
    @ MGMT Event: Discovering (0x0013) plen 2 {0x0001} [hci0] 27.422067
    Address type: 0x06
    LE Public
    LE Random
    Discovery: Enabled (0x01)

    Signed-off-by: João Paulo Rechi Vita
    Signed-off-by: Marcel Holtmann

    João Paulo Rechi Vita
     

25 Apr, 2019

2 commits

  • The minimum encryption key size for LE connections is 56 bits and to
    align LE with BR/EDR, enforce 56 bits of minimum encryption key size for
    BR/EDR connections as well.

    Signed-off-by: Marcel Holtmann
    Signed-off-by: Johan Hedberg
    Cc: stable@vger.kernel.org

    Marcel Holtmann
     
  • The flags field in 'struct shash_desc' never actually does anything.
    The only ostensibly supported flag is CRYPTO_TFM_REQ_MAY_SLEEP.
    However, no shash algorithm ever sleeps, making this flag a no-op.

    With this being the case, inevitably some users who can't sleep wrongly
    pass MAY_SLEEP. These would all need to be fixed if any shash algorithm
    actually started sleeping. For example, the shash_ahash_*() functions,
    which wrap a shash algorithm with the ahash API, pass through MAY_SLEEP
    from the ahash API to the shash API. However, the shash functions are
    called under kmap_atomic(), so actually they're assumed to never sleep.

    Even if it turns out that some users do need preemption points while
    hashing large buffers, we could easily provide a helper function
    crypto_shash_update_large() which divides the data into smaller chunks
    and calls crypto_shash_update() and cond_resched() for each chunk. It's
    not necessary to have a flag in 'struct shash_desc', nor is it necessary
    to make individual shash algorithms aware of this at all.

    Therefore, remove shash_desc::flags, and document that the
    crypto_shash_*() functions can be called from any context.

    Signed-off-by: Eric Biggers
    Signed-off-by: Herbert Xu

    Eric Biggers
     

24 Apr, 2019

6 commits

  • When flag HCI_QUIRK_USE_BDADDR_PROPERTY is set, we will read the
    bluetooth address from dts. If the bluetooth address node is missing
    from the dts we will enable it controller UNCONFIGURED state.
    This patch enables the normal flow even if the BD address is missing
    from the dts tree.

    Signed-off-by: Balakrishna Godavarthi
    Tested-by: Harish Bandi
    Signed-off-by: Marcel Holtmann

    Balakrishna Godavarthi
     
  • One of the more common cases of allocation size calculations is finding
    the size of a structure that has a zero-sized array at the end, along
    with memory for some number of elements for that array. For example:

    struct foo {
    int stuff;
    struct boo entry[];
    };

    size = sizeof(struct foo) + count * sizeof(struct boo);

    Instead of leaving these open-coded and prone to type mistakes, we can
    now use the new struct_size() helper:

    size = struct_size(instance, entry, count);

    This code was detected with the help of Coccinelle.

    Signed-off-by: Gustavo A. R. Silva
    Signed-off-by: Marcel Holtmann

    Gustavo A. R. Silva
     
  • In ext_adv_report_event rssi comes before data (not after data as
    in legacy adv_report_evt) so "+ 1" is not required in the ptr arithmatic
    to point to next report.

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

    Jaganath Kanakkassery
     
  • Struct ca is copied from userspace. It is not checked whether the "name"
    field is NULL terminated, which allows local users to obtain potentially
    sensitive information from kernel stack memory, via a HIDPCONNADD command.

    This vulnerability is similar to CVE-2011-1079.

    Signed-off-by: Young Xiao
    Signed-off-by: Marcel Holtmann
    Cc: stable@vger.kernel.org

    Young Xiao
     
  • Add return check for security level set for socket interface since
    stack will check the return value.

    Signed-off-by: Fugang Duan
    Signed-off-by: Marcel Holtmann

    Fugang Duan
     
  • l2cap_le_flowctl_init was reseting the tx_credits which works only for
    outgoing connection since that set the tx_credits on the response, for
    incoming connections that was not the case which leaves the channel
    without any credits causing it to be suspended.

    Signed-off-by: Luiz Augusto von Dentz
    Signed-off-by: Marcel Holtmann
    Cc: stable@vger.kernel.org # 4.20+

    Luiz Augusto von Dentz
     

20 Apr, 2019

1 commit

  • The SIOCGSTAMP/SIOCGSTAMPNS ioctl commands are implemented by many
    socket protocol handlers, and all of those end up calling the same
    sock_get_timestamp()/sock_get_timestampns() helper functions, which
    results in a lot of duplicate code.

    With the introduction of 64-bit time_t on 32-bit architectures, this
    gets worse, as we then need four different ioctl commands in each
    socket protocol implementation.

    To simplify that, let's add a new .gettstamp() operation in
    struct proto_ops, and move ioctl implementation into the common
    sock_ioctl()/compat_sock_ioctl_trans() functions that these all go
    through.

    We can reuse the sock_get_timestamp() implementation, but generalize
    it so it can deal with both native and compat mode, as well as
    timeval and timespec structures.

    Acked-by: Stefan Schmidt
    Acked-by: Neil Horman
    Acked-by: Marc Kleine-Budde
    Link: https://lore.kernel.org/lkml/CAK8P3a038aDQQotzua_QtKGhq8O9n+rdiz2=WDCp82ys8eUT+A@mail.gmail.com/
    Signed-off-by: Arnd Bergmann
    Acked-by: Willem de Bruijn
    Signed-off-by: David S. Miller

    Arnd Bergmann
     

13 Apr, 2019

1 commit


26 Feb, 2019

2 commits

  • Add HCI_QUIRK_USE_BDADDR_PROPERTY to allow controllers to retrieve
    the public Bluetooth address from the firmware node property
    'local-bd-address'. If quirk is set and the property does not exist
    or is invalid the controller is marked as unconfigured.

    Signed-off-by: Matthias Kaehlcke
    Reviewed-by: Balakrishna Godavarthi
    Tested-by: Balakrishna Godavarthi
    Signed-off-by: Marcel Holtmann

    Matthias Kaehlcke
     
  • Make use of the struct_size() helper instead of an open-coded version
    in order to avoid any potential type mistakes, in particular in the
    context in which this code is being used.

    So, change the following form:

    sizeof(*rp) + (sizeof(rp->entry[0]) * count);

    to :

    struct_size(rp, entry, count)

    Notice that, in this case, variable rp_len is not necessary, hence
    it is removed.

    This code was detected with the help of Coccinelle.

    Signed-off-by: Gustavo A. R. Silva
    Signed-off-by: Marcel Holtmann

    Gustavo A. R. Silva
     

25 Feb, 2019

1 commit

  • …etooth/bluetooth-next

    Johan Hedberg says:

    ====================
    Here's the main bluetooth-next pull request for the 5.1 kernel.

    - Fixes & improvements to mediatek, hci_qca, btrtl, and btmrvl HCI drivers
    - Fixes to parsing invalid L2CAP config option sizes
    - Locking fix to bt_accept_enqueue()
    - Add support for new Marvel sd8977 chipset
    - Various other smaller fixes & cleanups
    ====================

    Signed-off-by: David S. Miller <davem@davemloft.net>

    David S. Miller
     

18 Feb, 2019

2 commits

  • One of the more common cases of allocation size calculations is finding
    the size of a structure that has a zero-sized array at the end, along
    with memory for some number of elements for that array. For example:

    struct foo {
    int stuff;
    struct boo entry[];
    };

    size = sizeof(struct foo) + count * sizeof(struct boo);
    instance = alloc(size, GFP_KERNEL)

    Instead of leaving these open-coded and prone to type mistakes, we can
    now use the new struct_size() helper:

    size = struct_size(instance, entry, count);
    instance = alloc(size, GFP_KERNEL)

    This code was detected with the help of Coccinelle.

    Signed-off-by: Gustavo A. R. Silva
    Signed-off-by: Marcel Holtmann

    Gustavo A. R. Silva
     
  • Make use of the struct_size() helper instead of an open-coded version
    in order to avoid any potential type mistakes, in particular in the
    context in which this code is being used.

    So, change the following form:

    sizeof(*ev) + ev->num_hndl * sizeof(struct hci_comp_pkts_info)

    to :

    struct_size(ev, handles, ev->num_hndl)

    This code was detected with the help of Coccinelle.

    Signed-off-by: Gustavo A. R. Silva
    Signed-off-by: Marcel Holtmann

    Gustavo A. R. Silva
     

04 Feb, 2019

2 commits

  • When releasing socket, it is possible to enter hci_sock_release() and
    hci_sock_dev_event(HCI_DEV_UNREG) at the same time in different thread.
    The reference count of hdev should be decremented only once from one of
    them but if storing hdev to local variable in hci_sock_release() before
    detached from socket and setting to NULL in hci_sock_dev_event(),
    hci_dev_put(hdev) is unexpectedly called twice. This is resolved by
    referencing hdev from socket after bt_sock_unlink() in
    hci_sock_release().

    Reported-by: syzbot+fdc00003f4efff43bc5b@syzkaller.appspotmail.com
    Signed-off-by: Myungho Jung
    Signed-off-by: Marcel Holtmann

    Myungho Jung
     
  • As part of y2038 solution, all internal uses of
    struct timeval are replaced by struct __kernel_old_timeval
    and struct compat_timeval by struct old_timeval32.
    Make socket timestamps use these new types.

    This is mainly to be able to verify that the kernel build
    is y2038 safe when such non y2038 safe types are not
    supported anymore.

    Signed-off-by: Deepa Dinamani
    Acked-by: Willem de Bruijn
    Cc: isdn@linux-pingi.de
    Signed-off-by: David S. Miller

    Deepa Dinamani
     

25 Jan, 2019

2 commits

  • Don't populate the const array hw_err on the stack but instead make
    it static. Makes the object code smaller by 45 bytes:

    Before:
    text data bss dec hex filename
    100880 21090 1088 123058 1e0b2 linux/net/bluetooth/hci_core.o

    After:
    text data bss dec hex filename
    100739 21186 1088 123013 1e085 linux/net/bluetooth/hci_core.o

    (gcc version 8.2.0 x86_64)

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

    Colin Ian King
     
  • Add a hook to allow the BT driver to do device or command specific
    handling in case of timeouts. This is to be used by Intel driver to
    reset the device after certain number of timeouts.

    Signed-off-by: Rajat Jain
    Signed-off-by: Marcel Holtmann

    Rajat Jain
     

24 Jan, 2019

1 commit

  • In preparation to enabling -Wimplicit-fallthrough, mark switch cases
    where we are expecting to fall through.

    This patch fixes the following warnings:

    net/bluetooth/rfcomm/core.c:479:6: warning: this statement may fall through [-Wimplicit-fallthrough=]
    net/bluetooth/l2cap_core.c:4223:6: warning: this statement may fall through [-Wimplicit-fallthrough=]

    Warning level 3 was used: -Wimplicit-fallthrough=3

    This patch is part of the ongoing efforts to enabling
    -Wimplicit-fallthrough.

    Signed-off-by: Gustavo A. R. Silva
    Signed-off-by: Marcel Holtmann

    Gustavo A. R. Silva
     

23 Jan, 2019

2 commits

  • The function l2cap_get_conf_opt will return L2CAP_CONF_OPT_SIZE + opt->len
    as length value. The opt->len however is in control over the remote user
    and can be used by an attacker to gain access beyond the bounds of the
    actual packet.

    To prevent any potential leak of heap memory, it is enough to check that
    the resulting len calculation after calling l2cap_get_conf_opt is not
    below zero. A well formed packet will always return >= 0 here and will
    end with the length value being zero after the last option has been
    parsed. In case of malformed packets messing with the opt->len field the
    length value will become negative. If that is the case, then just abort
    and ignore the option.

    In case an attacker uses a too short opt->len value, then garbage will
    be parsed, but that is protected by the unknown option handling and also
    the option parameter size checks.

    Signed-off-by: Marcel Holtmann
    Reviewed-by: Greg Kroah-Hartman
    Signed-off-by: Johan Hedberg

    Marcel Holtmann
     
  • When doing option parsing for standard type values of 1, 2 or 4 octets,
    the value is converted directly into a variable instead of a pointer. To
    avoid being tricked into being a pointer, check that for these option
    types that sizes actually match. In L2CAP every option is fixed size and
    thus it is prudent anyway to ensure that the remote side sends us the
    right option size along with option paramters.

    If the option size is not matching the option type, then that option is
    silently ignored. It is a protocol violation and instead of trying to
    give the remote attacker any further hints just pretend that option is
    not present and proceed with the default values. Implementation
    following the specification and its qualification procedures will always
    use the correct size and thus not being impacted here.

    To keep the code readable and consistent accross all options, a few
    cosmetic changes were also required.

    Signed-off-by: Marcel Holtmann
    Reviewed-by: Greg Kroah-Hartman
    Signed-off-by: Johan Hedberg

    Marcel Holtmann
     

22 Jan, 2019

2 commits

  • With commit e16337622016 ("Bluetooth: Handle bt_accept_enqueue() socket
    atomically") lock_sock[_nested]() is used to acquire the socket lock
    before manipulating the socket. lock_sock[_nested]() may block, which
    is problematic since bt_accept_enqueue() can be called in bottom half
    context (e.g. from rfcomm_connect_ind()):

    [] __might_sleep+0x4c/0x80
    [] lock_sock_nested+0x24/0x58
    [] bt_accept_enqueue+0x48/0xd4 [bluetooth]
    [] rfcomm_connect_ind+0x190/0x218 [rfcomm]

    Add a parameter to bt_accept_enqueue() to indicate whether the
    function is called from BH context, and acquire the socket lock
    with bh_lock_sock_nested() if that's the case.

    Also adapt all callers of bt_accept_enqueue() to pass the new
    parameter:

    - l2cap_sock_new_connection_cb()
    - uses lock_sock() to lock the parent socket => process context

    - rfcomm_connect_ind()
    - acquires the parent socket lock with bh_lock_sock() => BH
    context

    - __sco_chan_add()
    - called from sco_chan_add(), which is called from sco_connect().
    parent is NULL, hence bt_accept_enqueue() isn't called in this
    code path and we can ignore it
    - also called from sco_conn_ready(). uses bh_lock_sock() to acquire
    the parent lock => BH context

    Fixes: e16337622016 ("Bluetooth: Handle bt_accept_enqueue() socket atomically")
    Signed-off-by: Matthias Kaehlcke
    Reviewed-by: Douglas Anderson
    Signed-off-by: Marcel Holtmann
    Cc: stable@vger.kernel.org

    Matthias Kaehlcke
     
  • Use DEFINE_DEBUGFS_ATTRIBUTE rather than DEFINE_SIMPLE_ATTRIBUTE
    for debugfs files.

    Semantic patch information:
    Rationale: DEFINE_SIMPLE_ATTRIBUTE + debugfs_create_file()
    imposes some significant overhead as compared to
    DEFINE_DEBUGFS_ATTRIBUTE + debugfs_create_file_unsafe().

    Generated by: scripts/coccinelle/api/debugfs/debugfs_simple_attr.cocci

    Signed-off-by: YueHaibing
    Signed-off-by: Marcel Holtmann

    YueHaibing
     

28 Dec, 2018

1 commit

  • Pull crypto updates from Herbert Xu:
    "API:
    - Add 1472-byte test to tcrypt for IPsec
    - Reintroduced crypto stats interface with numerous changes
    - Support incremental algorithm dumps

    Algorithms:
    - Add xchacha12/20
    - Add nhpoly1305
    - Add adiantum
    - Add streebog hash
    - Mark cts(cbc(aes)) as FIPS allowed

    Drivers:
    - Improve performance of arm64/chacha20
    - Improve performance of x86/chacha20
    - Add NEON-accelerated nhpoly1305
    - Add SSE2 accelerated nhpoly1305
    - Add AVX2 accelerated nhpoly1305
    - Add support for 192/256-bit keys in gcmaes AVX
    - Add SG support in gcmaes AVX
    - ESN for inline IPsec tx in chcr
    - Add support for CryptoCell 703 in ccree
    - Add support for CryptoCell 713 in ccree
    - Add SM4 support in ccree
    - Add SM3 support in ccree
    - Add support for chacha20 in caam/qi2
    - Add support for chacha20 + poly1305 in caam/jr
    - Add support for chacha20 + poly1305 in caam/qi2
    - Add AEAD cipher support in cavium/nitrox"

    * 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6: (130 commits)
    crypto: skcipher - remove remnants of internal IV generators
    crypto: cavium/nitrox - Fix build with !CONFIG_DEBUG_FS
    crypto: salsa20-generic - don't unnecessarily use atomic walk
    crypto: skcipher - add might_sleep() to skcipher_walk_virt()
    crypto: x86/chacha - avoid sleeping under kernel_fpu_begin()
    crypto: cavium/nitrox - Added AEAD cipher support
    crypto: mxc-scc - fix build warnings on ARM64
    crypto: api - document missing stats member
    crypto: user - remove unused dump functions
    crypto: chelsio - Fix wrong error counter increments
    crypto: chelsio - Reset counters on cxgb4 Detach
    crypto: chelsio - Handle PCI shutdown event
    crypto: chelsio - cleanup:send addr as value in function argument
    crypto: chelsio - Use same value for both channel in single WR
    crypto: chelsio - Swap location of AAD and IV sent in WR
    crypto: chelsio - remove set but not used variable 'kctx_len'
    crypto: ux500 - Use proper enum in hash_set_dma_transfer
    crypto: ux500 - Use proper enum in cryp_set_dma_transfer
    crypto: aesni - Add scatter/gather avx stubs, and use them in C
    crypto: aesni - Introduce partial block macro
    ..

    Linus Torvalds
     

19 Dec, 2018

3 commits


07 Dec, 2018

1 commit

  • In order to pass extack together with NETDEV_PRE_UP notifications, it's
    necessary to route the extack to __dev_open() from diverse (possibly
    indirect) callers. One prominent API through which the notification is
    invoked is dev_open().

    Therefore extend dev_open() with and extra extack argument and update
    all users. Most of the calls end up just encoding NULL, but bond and
    team drivers have the extack readily available.

    Signed-off-by: Petr Machata
    Acked-by: Jiri Pirko
    Reviewed-by: Ido Schimmel
    Reviewed-by: David Ahern
    Signed-off-by: David S. Miller

    Petr Machata
     

20 Nov, 2018

2 commits

  • 'shash' algorithms are always synchronous, so passing CRYPTO_ALG_ASYNC
    in the mask to crypto_alloc_shash() has no effect. Many users therefore
    already don't pass it, but some still do. This inconsistency can cause
    confusion, especially since the way the 'mask' argument works is
    somewhat counterintuitive.

    Thus, just remove the unneeded CRYPTO_ALG_ASYNC flags.

    This patch shouldn't change any actual behavior.

    Signed-off-by: Eric Biggers
    Signed-off-by: Herbert Xu

    Eric Biggers
     
  • 'cipher' algorithms (single block ciphers) are always synchronous, so
    passing CRYPTO_ALG_ASYNC in the mask to crypto_alloc_cipher() has no
    effect. Many users therefore already don't pass it, but some still do.
    This inconsistency can cause confusion, especially since the way the
    'mask' argument works is somewhat counterintuitive.

    Thus, just remove the unneeded CRYPTO_ALG_ASYNC flags.

    This patch shouldn't change any actual behavior.

    Signed-off-by: Eric Biggers
    Signed-off-by: Herbert Xu

    Eric Biggers
     

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

2 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