[PATCH] hv: mark hv_driver read only after init

Stephen Hemminger stephen at networkplumber.org
Fri Aug 12 23:35:56 UTC 2016


For hardening, the driver structure containing function pointers can
be marked read only after initial registration is done.

Signed-off-by: Stephen Hemminger <sthemmin at linuxonhyperv.com>

---
 drivers/hid/hid-hyperv.c              |    2 +-
 drivers/input/serio/hyperv-keyboard.c |    2 +-
 drivers/net/hyperv/netvsc_drv.c       |    2 +-
 drivers/pci/host/pci-hyperv.c         |    2 +-
 drivers/scsi/storvsc_drv.c            |    2 +-
 drivers/video/fbdev/hyperv_fb.c       |    2 +-
 6 files changed, 6 insertions(+), 6 deletions(-)

--- a/drivers/net/hyperv/netvsc_drv.c	2016-08-12 16:23:42.077030799 -0700
+++ b/drivers/net/hyperv/netvsc_drv.c	2016-08-12 16:23:42.073030781 -0700
@@ -1488,7 +1488,7 @@ static const struct hv_vmbus_device_id i
 MODULE_DEVICE_TABLE(vmbus, id_table);
 
 /* The one and only one */
-static struct  hv_driver netvsc_drv = {
+static struct hv_driver netvsc_drv __ro_after_init = {
 	.name = KBUILD_MODNAME,
 	.id_table = id_table,
 	.probe = netvsc_probe,
--- a/drivers/hid/hid-hyperv.c	2016-08-12 16:23:42.077030799 -0700
+++ b/drivers/hid/hid-hyperv.c	2016-08-12 16:23:42.077030799 -0700
@@ -593,7 +593,7 @@ static const struct hv_vmbus_device_id i
 
 MODULE_DEVICE_TABLE(vmbus, id_table);
 
-static struct  hv_driver mousevsc_drv = {
+static struct hv_driver mousevsc_drv __ro_after_init = {
 	.name = KBUILD_MODNAME,
 	.id_table = id_table,
 	.probe = mousevsc_probe,
--- a/drivers/input/serio/hyperv-keyboard.c	2016-08-12 16:23:42.077030799 -0700
+++ b/drivers/input/serio/hyperv-keyboard.c	2016-08-12 16:23:42.077030799 -0700
@@ -420,7 +420,7 @@ static const struct hv_vmbus_device_id i
 
 MODULE_DEVICE_TABLE(vmbus, id_table);
 
-static struct  hv_driver hv_kbd_drv = {
+static struct hv_driver hv_kbd_drv __ro_after_init = {
 	.name = KBUILD_MODNAME,
 	.id_table = id_table,
 	.probe = hv_kbd_probe,
@@ -434,6 +434,7 @@ static int __init hv_kbd_init(void)
 
 static void __exit hv_kbd_exit(void)
 {
+
 	vmbus_driver_unregister(&hv_kbd_drv);
 }
 
--- a/drivers/pci/host/pci-hyperv.c	2016-08-12 16:23:42.077030799 -0700
+++ b/drivers/pci/host/pci-hyperv.c	2016-08-12 16:23:42.077030799 -0700
@@ -2340,7 +2340,7 @@ static const struct hv_vmbus_device_id h
 
 MODULE_DEVICE_TABLE(vmbus, hv_pci_id_table);
 
-static struct hv_driver hv_pci_drv = {
+static struct hv_driver hv_pci_drv __ro_after_init = {
 	.name		= "hv_pci",
 	.id_table	= hv_pci_id_table,
 	.probe		= hv_pci_probe,
--- a/drivers/scsi/storvsc_drv.c	2016-08-12 16:23:42.077030799 -0700
+++ b/drivers/scsi/storvsc_drv.c	2016-08-12 16:23:42.077030799 -0700
@@ -1739,7 +1739,7 @@ static int storvsc_remove(struct hv_devi
 	return 0;
 }
 
-static struct hv_driver storvsc_drv = {
+static struct hv_driver storvsc_drv __ro_after_init = {
 	.name = KBUILD_MODNAME,
 	.id_table = id_table,
 	.probe = storvsc_probe,
--- a/drivers/video/fbdev/hyperv_fb.c	2016-08-12 16:23:42.077030799 -0700
+++ b/drivers/video/fbdev/hyperv_fb.c	2016-08-12 16:23:42.077030799 -0700
@@ -907,7 +907,7 @@ static const struct hv_vmbus_device_id i
 MODULE_DEVICE_TABLE(pci, pci_stub_id_table);
 MODULE_DEVICE_TABLE(vmbus, id_table);
 
-static struct hv_driver hvfb_drv = {
+static struct hv_driver hvfb_drv __ro_after_init = {
 	.name = KBUILD_MODNAME,
 	.id_table = id_table,
 	.probe = hvfb_probe,


More information about the devel mailing list