Wonder if it is trying to remove a notifier that hasn't been
registered.  Seems the Linux code would allow that.

Can you try the diff below?


Index: dev/pci/drm/drm_linux.c
===================================================================
RCS file: /cvs/src/sys/dev/pci/drm/drm_linux.c,v
retrieving revision 1.48
diff -u -p -r1.48 drm_linux.c
--- dev/pci/drm/drm_linux.c     18 Aug 2019 13:11:47 -0000      1.48
+++ dev/pci/drm/drm_linux.c     27 Aug 2019 09:12:10 -0000
@@ -1120,8 +1120,17 @@ register_acpi_notifier(struct notifier_b
 int
 unregister_acpi_notifier(struct notifier_block *nb)
 {
-       SLIST_REMOVE(&drm_linux_acpi_notify_list, nb, notifier_block, link);
-       return 0;
+       struct notifier_block *tmp;
+
+       SLIST_FOREACH(tmp, &drm_linux_acpi_notify_list, link) {
+               if (tmp == nb) {
+                       SLIST_REMOVE(&drm_linux_acpi_notify_list, nb,
+                           notifier_block, link);
+                       return 0;
+               }
+       }
+
+       return -ENOENT;
 }
 
 const char *

Reply via email to