1. 03 6月, 2020 1 次提交
    • G
      um: virtio: Replace zero-length array with flexible-array · f6e8c474
      Gustavo A. R. Silva 提交于
      The current codebase makes use of the zero-length array language
      extension to the C90 standard, but the preferred mechanism to declare
      variable-length types such as these ones is a flexible array member[1][2],
      introduced in C99:
      
      struct foo {
              int stuff;
              struct boo array[];
      };
      
      By making use of the mechanism above, we will get a compiler warning
      in case the flexible array does not occur last in the structure, which
      will help us prevent some kind of undefined behavior bugs from being
      inadvertently introduced[3] to the codebase from now on.
      
      Also, notice that, dynamic memory allocations won't be affected by
      this change:
      
      "Flexible array members have incomplete type, and so the sizeof operator
      may not be applied. As a quirk of the original implementation of
      zero-length arrays, sizeof evaluates to zero."[1]
      
      sizeof(flexible-array-member) triggers a warning because flexible array
      members have incomplete type[1]. There are some instances of code in
      which the sizeof operator is being incorrectly/erroneously applied to
      zero-length arrays and the result is zero. Such instances may be hiding
      some bugs. So, this work (flexible-array member conversions) will also
      help to get completely rid of those sorts of issues.
      
      This issue was found with the help of Coccinelle.
      
      [1] https://gcc.gnu.org/onlinedocs/gcc/Zero-Length.html
      [2] https://github.com/KSPP/linux/issues/21
      [3] commit 76497732 ("cxgb3/l2t: Fix undefined behaviour")
      Signed-off-by: NGustavo A. R. Silva <gustavoars@kernel.org>
      Signed-off-by: NRichard Weinberger <richard@nod.at>
      f6e8c474
  2. 26 11月, 2019 1 次提交
  3. 16 9月, 2019 2 次提交
  4. 30 3月, 2018 1 次提交
  5. 20 2月, 2018 1 次提交
    • A
      High Performance UML Vector Network Driver · 49da7e64
      Anton Ivanov 提交于
      1. Provides infrastructure for vector IO using recvmmsg/sendmmsg.
          1.1. Multi-message read.
          1.2. Multi-message write.
          1.3. Optimized queue support for multi-packet enqueue/dequeue.
          1.4. BQL/DQL support.
      2. Implements transports for several transports as well support
      for direct wiring of PWEs to NIC. Allows direct connection of VMs
      to host, other VMs and network devices with no switch in use.
          2.1. Raw socket >4 times higher PPS and 10 times higher tcp RX
          than existing pcap based transport (> 4Gbit)
          2.2. New tap transport using socket RX and tap xmit. Similar
          performance improvements (>4Gbit)
          2.3. GRE transport - direct wiring to GRE PWE
          2.4. L2TPv3 transport - direct wiring to L2TPv3 PWE
      3. Tuning, performance and offload related setting support via ethtool.
      4. Initial BPF support - used in tap/raw to avoid software looping
      5. Scatter Gather support.
      6. VNET and checksum offload support for raw socket transport.
      7. TSO/GSO support where applicable or available
      8. Migrates all error messages to netdevice_*() and rate limits
      them where needed.
      Signed-off-by: NAnton Ivanov <anton.ivanov@cambridgegreys.com>
      Signed-off-by: NRichard Weinberger <richard@nod.at>
      49da7e64