Date: Wed, 22 Apr 2020 05:08:42 +0000 (UTC) From: Xin LI <delphij@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org Subject: svn commit: r360184 - stable/12/sys/dev/evdev Message-ID: <202004220508.03M58gA0057266@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
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);
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202004220508.03M58gA0057266>