Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 11 Jun 2018 23:31:03 +0000
From:      bugzilla-noreply@freebsd.org
To:        bugs@FreeBSD.org
Subject:   [Bug 228907] VMCI driver: During datagram dispatch if there's no source context then use the current context.
Message-ID:  <bug-228907-227@https.bugs.freebsd.org/bugzilla/>

next in thread | raw e-mail | index | archive | help
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=3D228907

            Bug ID: 228907
           Summary: VMCI driver: During datagram dispatch if there's no
                    source context then use the current context.
           Product: Base System
           Version: CURRENT
          Hardware: Any
                OS: Any
            Status: New
          Severity: Affects Some People
          Priority: ---
         Component: kern
          Assignee: bugs@FreeBSD.org
          Reporter: vdasahar@gmail.com

When dispatching a VMCI datagram, if no source context is provided we must =
use
the current context. Also, it's better to use VMCI_MEMORY_ATOMIC i.e, M_NOW=
AIT
for memory allocation in datagram_create_hnd. Could you please help get this
patch in?

--- a/freebsd_driver/src/vmci_datagram.c
+++ b/freebsd_driver/src/vmci_datagram.c
@@ -160,7 +160,7 @@ datagram_create_hnd(vmci_id resource_id, uint32_t flags,
                handle =3D VMCI_MAKE_HANDLE(context_id, resource_id);
        }

-       entry =3D vmci_alloc_kernel_mem(sizeof(*entry), VMCI_MEMORY_NORMAL);
+       entry =3D vmci_alloc_kernel_mem(sizeof(*entry), VMCI_MEMORY_ATOMIC);
        if (entry =3D=3D NULL) {
                VMCI_LOG_WARNING(LGPFX"Failed allocating memory for datagra=
m "
                    "entry.\n");
@@ -457,7 +457,7 @@ vmci_datagram_dispatch_as_guest(struct vmci_datagram *d=
g)

        resource =3D vmci_resource_get(dg->src, VMCI_RESOURCE_TYPE_DATAGRAM=
);
        if (NULL =3D=3D resource)
-               return VMCI_ERROR_NO_HANDLE;
+               return (VMCI_ERROR_NO_HANDLE);

        retval =3D vmci_send_datagram(dg);
        vmci_resource_release(resource);
@@ -495,6 +495,10 @@ vmci_datagram_dispatch(vmci_id context_id, struct
vmci_datagram *dg)
                return (VMCI_ERROR_INVALID_ARGS);
        }

+       /* If no source context then use the current context. */
+       if (VMCI_INVALID_ID =3D=3D dg->src.context)
+               dg->src.context =3D vmci_get_context_id();
+
        return (vmci_datagram_dispatch_as_guest(dg));
 }

--=20
You are receiving this mail because:
You are the assignee for the bug.=



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bug-228907-227>