svn commit: r360184 - stable/12/sys/dev/evdev

Xin LI delphij at FreeBSD.org
Wed Apr 22 05:08:43 UTC 2020


Author: delphij
Date: Wed Apr 22 05:08:42 2020
New Revision: 360184
URL: https://svnweb.freebsd.org/changeset/base/360184

Log:
  MFC r360104: Use LIST_FOREACH_SAFE instead of LIST_FOREACH as we are
  removing elements in the middle.
  
  This fixes a panic when detaching USB mouse.
  
  PR:		245732
  Reviewed by:	wulf

Modified:
  stable/12/sys/dev/evdev/evdev.c
Directory Properties:
  stable/12/   (props changed)

Modified: stable/12/sys/dev/evdev/evdev.c
==============================================================================
--- stable/12/sys/dev/evdev/evdev.c	Wed Apr 22 04:05:02 2020	(r360183)
+++ stable/12/sys/dev/evdev/evdev.c	Wed Apr 22 05:08:42 2020	(r360184)
@@ -356,7 +356,7 @@ evdev_register_mtx(struct evdev_dev *evdev, struct mtx
 int
 evdev_unregister(struct evdev_dev *evdev)
 {
-	struct evdev_client *client;
+	struct evdev_client *client, *tmp;
 	int ret;
 	debugf(evdev, "%s: unregistered evdev provider: %s\n",
 	    evdev->ev_shortname, evdev->ev_name);
@@ -366,7 +366,7 @@ evdev_unregister(struct evdev_dev *evdev)
 	EVDEV_LOCK(evdev);
 	evdev->ev_cdev->si_drv1 = NULL;
 	/* Wake up sleepers */
-	LIST_FOREACH(client, &evdev->ev_clients, ec_link) {
+	LIST_FOREACH_SAFE(client, &evdev->ev_clients, ec_link, tmp) {
 		evdev_revoke_client(client);
 		evdev_dispose_client(evdev, client);
 		EVDEV_CLIENT_LOCKQ(client);


More information about the svn-src-all mailing list