[dpdk-dev] [PATCH 07/22] doc: change the Windows UIO driver's default security descriptor to admin only

Narcisa Ana Maria Vasile navasile at linux.microsoft.com
Fri Aug 14 01:21:30 CEST 2020


From: Harini Ramakrishnan <haramakr at microsoft.com>

---
 kernel/windows/netuio/netuio_dev.c | 54 +++++++++++++++++-------------
 1 file changed, 30 insertions(+), 24 deletions(-)

diff --git a/kernel/windows/netuio/netuio_dev.c b/kernel/windows/netuio/netuio_dev.c
index 10ff5f903..4d8b9430d 100644
--- a/kernel/windows/netuio/netuio_dev.c
+++ b/kernel/windows/netuio/netuio_dev.c
@@ -32,37 +32,43 @@ netuio_create_device(_Inout_ PWDFDEVICE_INIT DeviceInit)
     NTSTATUS status;
 
     PAGED_CODE();
-    WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE(&deviceAttributes, NETUIO_CONTEXT_DATA);
 
-    // Set the device context cleanup callback.
-    // This function will be called when the WDF Device Object associated to the current device is destroyed
-    deviceAttributes.EvtCleanupCallback = netuio_evt_device_context_cleanup;
+	// Ensure that only administrators can access our device object.
+	status = WdfDeviceInitAssignSDDLString(DeviceInit, &SDDL_DEVOBJ_SYS_ALL_ADM_ALL);
 
-    status = WdfDeviceCreate(&DeviceInit, &deviceAttributes, &device);
+	if (NT_SUCCESS(status)) {
+		WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE(&deviceAttributes, NETUIO_CONTEXT_DATA);
 
-    if (NT_SUCCESS(status)) {
-        // Create a device interface so that applications can find and talk to us.
-        status = WdfDeviceCreateDeviceInterface(device, &GUID_DEVINTERFACE_netUIO, NULL);
+		// Set the device context cleanup callback.
+		// This function will be called when the WDF Device Object associated to the current device is destroyed
+		deviceAttributes.EvtCleanupCallback = netuio_evt_device_context_cleanup;
 
-        if (NT_SUCCESS(status)) {
-            // Retrieve and store PCI information
-            status = get_pci_device_info(device);
-        }
+		status = WdfDeviceCreate(&DeviceInit, &deviceAttributes, &device);
+	}
 
-        if (NT_SUCCESS(status)) {
-            // Create a symbolic link name for user-space access
-            status = create_device_specific_symbolic_link(device);
-        }
+	if (NT_SUCCESS(status)) {
+		// Create a device interface so that applications can find and talk to us.
+		status = WdfDeviceCreateDeviceInterface(device, &GUID_DEVINTERFACE_netUIO, NULL);
+	}
 
-        if (NT_SUCCESS(status)) {
-            // Initialize the I/O Package and any Queues
-            status = netuio_queue_initialize(device);
-        }
+    if (NT_SUCCESS(status)) {
+        // Retrieve and store PCI information
+        status = get_pci_device_info(device);
+    }
 
-        if (NT_SUCCESS(status)) {
-            // Allocate physically contiguous memory for user process use. We'll map it later
-            status = allocate_usermemory_segment(device);
-        }
+    if (NT_SUCCESS(status)) {
+        // Create a symbolic link name for user-space access
+        status = create_device_specific_symbolic_link(device);
+    }
+
+    if (NT_SUCCESS(status)) {
+        // Initialize the I/O Package and any Queues
+        status = netuio_queue_initialize(device);
+    }
+
+    if (NT_SUCCESS(status)) {
+        // Allocate physically contiguous memory for user process use. We'll map it later
+        status = allocate_usermemory_segment(device);
     }
 
     return status;
-- 
2.23.0.vfs.1.1.63.g5a5ad7f



More information about the dev mailing list