Linux VMCI driver features and bug fixes
search cancel

Linux VMCI driver features and bug fixes

book

Article ID: 313775

calendar_today

Updated On:

Products

VMware vSphere ESXi

Issue/Introduction

This article provides a summary of the important features and bug fixes implemented in the Linux VMCI driver (vmw_vmci.ko) contributed to the upstream Linux kernel. Linux distro releases are expected to include all of the changes described below through the specific version of kernel that the distro release is based. The OS vendor or community may also have back ported a subset of changes from newer Linux kernels to their releases. Please contact the OS vendor or community for availability of specific patches that have been back ported from newer kernel versions.

Resolution

Changes implemented by Linux kernel versions:

5.19

  1. 1f7142915d304804a9bd952245fce92786b1b62f ("VMCI: Add support for ARM64")
  2. f61c5c830ff0c906907a73a4bfddba6a8f91cbcb ("misc: vmw_vmci: replace usage of found with dedicated list iterator variable")

5.18

  1. c8e9b30ccae605bf1dbeaf03971f9b83f70b928d ("VMCI: Release notification_bitmap in error path")
  2. 5df0e734b8c39598effe0f17e5bd8ff7748a0693 ("VMCI: Check exclusive_vectors when freeing interrupt 1")
  3. 77e861619baea5a7c934e47fda74b03c0b072aec ("VMCI: Fix some error handling paths in vmci_guest_probe_device()")
  4. cc312da2d3af87f183c57b672042c85cfe6f15c2 ("VMCI: No need to clear memory after a dma_alloc_coherent() call")
  5. b791da238992436f6269e8743b3bc23305702674 ("VMCI: Fix the description of vmci_check_host_caps()")
  6. 463713eb6164b6577f8e91447c7745628215531b ("VMCI: dma dg: add support for DMA datagrams receive")
  7. 22aa5c7f323022477b70e044eb00e6bfea9498e8 ("VMCI: dma dg: add support for DMA datagrams sends")
  8. 5ee109828e73bbe4213c373988608d8f33e03d78 ("VMCI: dma dg: allocate send and receive buffers for DMA datagrams")
  9. cc68f2177fcbfe2dbe5e9514789b96ba5995ec1e ("VMCI: dma dg: register dummy IRQ handlers for DMA datagrams")
  10. 8cb520bea1470ca205980fbf030ed1f472f4af2f ("VMCI: dma dg: set OS page size")
  11. eed2298d936087a1c85e0fa6f7170028e4f4fded ("VMCI: dma dg: detect DMA datagram capability")
  12. e283a0e8b7ea83915e988ed059384af166b444c0 ("VMCI: dma dg: add MMIO access to registers")
  13. fac608138c6136126faadafa5554cc0bbabf3c44 ("VMCI: dma dg: whitespace formatting change for vmci register defines")

5.17

  1. 6da3f33770e08348691d90455ef6149e15551854 ("misc: vmw_vmci: Switch to kvfree_rcu() API")

5.15

  1. a30dc6cf0dc51419021550152e435736aaef8799 ("VMCI: fix NULL pointer dereference when unmapping queue pair")

5.14

  1. 7487257cea875a2ee0aab088ee1dd92cd77698d4 ("misc: vmw_vmci: return the correct errno code")

5.13

  1. b2192cfeba8481224da0a4ec3b4a7ccd80b1623b ("misc: vmw_vmci: explicitly initialize vmci_datagram payload")
  2. 376565b9717c30cd58ad33860fa42697615fa2e4 ("misc: vmw_vmci: explicitly initialize vmci_notify_bm_set_msg struct")
  3. 7b7d2261aa8dce949c08d58ed1d02e54a0fbbab5 ("vmci_host: print unexpanded names of ioctl requests in debug messages")

5.12

  1. 7eecea89e44f64e60f1410483e79a0cab18ad580 ("VMCI: Enforce queuepair max size for IOCTL_VMCI_QUEUEPAIR_ALLOC")
  2. 2fd10bcf0310b9525b2af9e1f7aa9ddd87c3772e ("drivers/misc/vmw_vmci: restrict too big queue size in qp_host_alloc_queue")
  3. 5a16c535409f8dcb7568e20737309e3027ae3e49 ("VMCI: Use set_page_dirty_lock() when unregistering guest memory")
  4. e8266c4c3307d2a64f8ebcb22323347be8854742 ("VMCI: Stop log spew when qp allocation isn't possible")
  5. fc716ffb9afe789dcf8a5d792e3980f817e0ad1b ("misc/vmw_vmci: fix typo")

5.11

  1. 31dcb6c30a26d32650ce134820f27de3c675a45a ("misc: vmw_vmci: fix kernel info-leak by initializing dbells in vmci_ctx_get_chkpt_doorbells()")

5.10

  1. 90ca6333fd65f318c47bff425e1ea36c0a5539f6 ("VMCI: check return value of get_user_pages_fast() for errors")

5.8

  1. 87c233b8158a20a9c9ab1da96cb5cb1734d9006e ("vmci_host: get rid of pointless access_ok()")

5.5

  1. 0da522107e5d9c000a4871d52e570912aa1225a2 ("Merge tag 'compat-ioctl-5.5' of git://git.kernel.org:/pub/scm/linux/kernel/git/arnd/playground")
  2. 2be8ca97d07e1133e81cd3977bd1f94058b65489 ("vsock/vmci: make vmci_vsock_cb_host_called static")
  3. b1bba80a4376aef34de2b57bfb8834bd095703ed ("vsock/vmci: register vmci_transport only when VMCI guest/host are active")
  4. 1832f2d8ff69138aa70d3cb3b4ea3c2058e73aea ("compat_ioctl: move more drivers to compat_ptr_ioctl")

5.3

  1. ba03a9bbd17b149c373c0ea44017f35fc2cd0f28 ("VMCI: Release resource if the work is already queued")
  2. 1c2eb5b2853c9f513690ba6b71072d8eb65da16a ("VMCI: Fix integer overflow in VMCI handle arrays")
5.2
  1. 685a6bf8485e6319c4dd070c02491f9163c23083 ("treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 321")
  2. ec8f24b7faaf3d4799a7c3f4c1b87f6b02778ad1 ("treewide: Add SPDX license identifier - Makefile/Kconfig")
  3. 73b0140bf0fe9df90fb267c00673c4b9bf285430 ("mm/gup: change GUP fast to use flags rather than a write 'bool'")

5.1

  1. f2db7361cb19bf3a6f7fd367f21d8eb325397946 ("VMCI: Support upto 64-bit PPNs")

5.0

  1. 96d4f267e40f9509e8a66e2b39e8b95655617693 ("Remove 'type' argument from access_ok() function")
  2. 8995fa1e1c9bcb76d407b860770e640b60ed8c76 ("VMCI: Use memdup_user() rather than duplicating its implementation")

4.20

  1. 9931a07d518e86eb58a75e508ed9626f86359303 ("Merge branch 'work.afs' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs")
  2. aa563d7bca6e882ec2bdae24603c8f016401a144 ("iov_iter: Separate type from direction and use accessor functions")
  3. 8f523d6db7ed69f69720267af170c0719023f373 ("VMCI: remove set but not used variable 'cid'")
  4. 11924ba5e671d6caef1516923e2bd8c72929a3fe ("VMCI: Resource wildcard match fixed")
  5. 7052c5e12851ed5882ca0d0d201060511e8ffa02 ("misc: remove redundant include moduleparam.h")

4.19

  1. 7fb2fd4e25fc1fb10dcb30b5519de257cfeae84c ("vmci: type promotion bug in qp_host_get_user_memory()")
  2. c4bcaffa6b8192379eec9a8f7fe263907c4b755e ("misc: vmci: remove redundant variable is_local")

4.18

  1. 6da2ec56059c3c7a7e5f729e6349e74ace1e5c57 ("treewide: kmalloc() -> kmalloc_array()")
4.16
  1. a9a08845e9acbd224e4ee466f5c1275ed50054e8 ("vfs: do bulk POLL* -> EPOLL* replacement")
  2. d76e0a050e0f5e7c00e6d334f758178bbc16eb98 ("Merge branch 'work.vmci' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs")
  3. d1038084415c413b3c11c536f28fc5571ed00153 ("vmci: the same on the send side...")
  4. 53f58d8ed862a3675659fb3162abfc5dd5f1025b ("vmci: simplify qp_dequeue_locked()")
  5. ce3d6e7d4200617e6086c1a83220cf6efd3c92cf ("vmci: get rid of qp_memcpy_from_queue()")
  6. 19c5b89d8d582cce9a90335de212cf477fe15b95 ("vmci: fix buf_size in case of iovec-based accesses")
  7. afc9a42b7464f76e1388cad87d8543c69f6f74ed ("the rest of drivers/*: annotate ->poll() instances")

4.14

  1. 234b7f8d3bf2738024b155b87303ed1218e620fa ("vmci: fix duplicated code for different branches")

4.12

  1. 146180c052a00172f4dc08eaade836fd02f61fb5 ("drivers/misc/vmw_vmci/vmci_queue_pair.c: fix a couple integer overflow tests")

4.11

  1. c3423563c68fc454b805b46cb69fd4816db933e2 ("vmw_vmci: handle the return value from pci_alloc_irq_vectors correctly")
  2. b69339ba109549beeaf45c45c52ac7025bfcd954 ("sched/headers: Prepare to remove spurious <linux/sched.h> inclusion dependencies")
  3. b2d091031075ac9a1598e3cc3a29c28f02e64c0d ("sched/headers: Prepare to use <linux/rcuupdate.h> instead of <linux/rculist.h> in <linux/sched.h>")
  4. 5b825c3af1d8a0af4deb4a5eb349d0d0050c62e5 ("sched/headers: Prepare to remove <linux/cred.h> inclusion from <linux/sched.h>")
  5. 5b5e0928f742cfa853b2411400a1b19fa379d758 ("lib/vsprintf.c: remove %Z support")
  6. 3f8b6fb7f279c769c0973431be1cd7f15e8b2755 ("scripts/spelling.txt: add "comsume(r)" pattern and fix typo instances")
  7. 3bb434cdcc6af3d4e70ba041e6f596e465d11e14 ("vmw_vmci: switch to pci_irq_alloc_vectors")

4.9

  1. eb94cd68abd9b7c92bf70ddc452d65f1a84c46e2 ("VMCI: Doorbell create and destroy fixes")
  2. 655745b0d1ebeceb0453f1c6adca154a4fac0ad5 ("VMCI: use memdup_user().")

4.6

  1. 09cbfeaf1a5a67bfb3201e0c83c810cecb2efa5a ("mm, fs: get rid of PAGE_CACHE_* and page_cache_{get,release} macros")
  2. f42a0fd13bd281811e7457b28d939c8e8b808868 ("VMCI: Use 32bit atomics for queue headers on X86_32")

4.4

  1. bf84b1406c206374133e85e15bab266e10e1a837 ("misc/vmw_vmci: use kmemdup rather than duplicating its implementation")

4.3

  1. f368ed6088ae9c1fbe1c897bb5f215ce5e63fa1e ("char: make misc_deregister a void function")

4.1

  1. aa6467f190d32b263f7144239c89c63c922d9ff8 ("VMCI: Guard against overflow in queue pair allocation")
  2. 74b5c297f5ecbef0ca128fa7b385b43f036a7984 ("VMCI: Check userland-provided datagram size")
  3. bf1361211dd842659b5b882390de687426f3471a ("drivers/vmw_vmci: Show correct get_user_pages_fast upon failure")

4.0

  1. 4ba63072b998cc31515cc6305c25f3b808b50c01 ("Merge tag 'char-misc-3.20-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc")
  2. 4c946d9c11d173c2ea6b9081b248f8072e6b46f1 ("vmci: propagate msghdr all way down to __qp_memcpy_to_queue()")
  3. a1d88436d53a75e950db15834b3d2f8c0c358fdc ("VMCI: Fix two UVA mapping bugs")

3.19

  1. d838df2e5dcbb6ed4d82854869e9a30f9aeef6da ("vmci: propagate msghdr all way down to __qp_memcpy_from_queue()")

3.18

  1. 80213c03c4151d900cf293ef0fc51f8d88495e14 ("Merge tag 'pci-v3.18-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci")
  2. 94e57fea62020dbf6e5d0093eabcd28366e86044 ("PCI: Move PCI_VENDOR_ID_VMWARE to pci_ids.h")
  3. 2e45354645f77e83fe3832f150acdcfeff45f44c ("VMCI: integer overflow in vmci_datagram_dispatch()")

3.17

  1. 32182cd39d94fa9586cc08c74fdb30fb718f712d ("misc: remove DEFINE_PCI_DEVICE_TABLE usage")

3.15

  1. e0117521e555224ec8938e69832b0b4c69954d54 ("vmw_vmci: Use pci_enable_msix_exact() instead of pci_enable_msix()")

3.14

  1. 782f24453536460482f9dd14d3677ade910b1fd1 ("VMCI: fix error handling path when registering guest driver")

3.13

  1. 240ddd495a9e72073d11b1b7c2ec9ea14e7015cb ("vmw_vmci: Convert driver to use get_user_pages_fast()")
  2. 9089e3be60b13a1114e8afdc37c605e75cfc4a26 ("VMCI: fix to pass correct device identity to free_irq()")

3.12

  1. 6d6dfb4f4aa9ee352a199b5379942350bdd26e64 ("VMCI: Add support for virtual IOMMU")
  2. 45412befe8fee657effc15112af05ca9dbea61fc ("VMCI: Remove non-blocking/pinned queuepair support")

3.10

  1. d2f83e9078b8114e3b9d09082856c1aac299aa37 ("Hoist memcpy_fromiovec/memcpy_toiovec into lib/")

3.9

  1. 6d4f0139d642c45411a47879325891ce2a7c164a ("misc/vmw_vmci: Add dependency on CONFIG_NET")
  2. 347e0899b1c75d907f01ac883ca38d37fe9bfa42 ("VMCI: Fix process-to-process DRGAMs.")
  3. b67bfe0d42cac56c512dd5da4b1b347a23f4b70a ("hlist: drop the node parameter from iterators")
  4. f6dcf8e747a0723ace5275334bacfcd88ab39333 ("drivers, vmci: Fix build error")
  5. 5a19b78972c39be0c5378c14c23e6c998683e80f ("5a19b78972c39be0c5378c14c23e6c998683e80f")
  6. ea8a83a4b718f78a8ea2ce3f0237e78a23f8f12b ("VMCI: include slab.h into files using kmalloc/kfree")
  7. e6389a13e42d5388ec044ce8da1b3bcfa39598ef ("VMCI: rename PPNset to ppn_set to avoid camel case")
  8. 0e7894dc82bd9d4d82c16d16189f58da6d41d018 ("VMCI: Fix "always true condition"")
  9. 32b083a3fd1452b9d5aba8e781ca95b566f3e054 ("VMCI: Fix deref before NULL-check of queuepair ptr")
  10. 42281d20cdf94a9d2aae67ee019f8bcc390ebed6 ("VMCI: Remove dependency on BLOCK I/O")
  11. bad7d9df274b03a0761913b6628fc7663ad3bfa6 ("VMCI: Add PCI as a dependency")
  12. 20259849bb1ac1ffb0156eb359810e8b99cb644d ("VMCI: Some header and config files.")
  13. 8bf503991f87e32ea42a7bd69b79ba084fddc5d7 ("VMCI: host side driver implementation.")
  14. 1f166439917b69d3046e2e49fe923579d9181212 ("VMCI: guest side driver implementation.")
  15. e76ffea3216bfea2b46bbc40f322b43430ec3367 ("VMCI: routing implementation.")
  16. bc63dedb7d46a7d690c6b6edf69136b88af06cc6 ("VMCI: resource object implementation.")
  17. 06164d2b72aa752ce4633184b3e0d97601017135 ("VMCI: queue pairs implementation.")
  18. b484b26cc7be6ccf3676deb5e03aed2609ee9a40 ("VMCI: handle array implementation.")
  19. 1d990201f9bb499b7c76ab00abeb7e803c0bcb2a ("VMCI: event handling implementation.")
  20. 197dbaaabd51c170f9b77bd1c401d4ea0361bb7b ("VMCI: device driver implementaton.")
  21. 83e2ec765be03e8a8a07619e65df70b48a1db023 ("VMCI: doorbell implementation.")
  22. a110b7ebb9c674a2b591af2780dd512ad0198d50 ("VMCI: datagram implementation.")
  23. 28d6692cd8fb2a900edba5e5983be4478756ef6f ("VMCI: context implementation.")