Thanks!

On Mon, Apr 20, 2020 at 7:45 AM Mark Johnston <ma...@freebsd.org> wrote:
>
> Author: markj
> Date: Mon Apr 20 14:45:17 2020
> New Revision: 360122
> URL: https://svnweb.freebsd.org/changeset/base/360122
>
> Log:
>   Handle trashed queue pointers in vm_page_acquire_unlocked().
>
>   vm_page_acquire_unlocked() relies on type-stability of vm_page
>   structures and assumes that the listq linkage pointers always point to a
>   vm_page or are NULL.  QUEUE_MACRO_DEBUG_TRASH breaks that assumption, so
>   add an explicit check for a trashed queue pointer before dereferencing.
>
>   Reported and tested by:       pho
>   Reviewed by:  kib
>   Sponsored by: The FreeBSD Foundation
>   Differential Revision:        https://reviews.freebsd.org/D24472
>
> Modified:
>   head/sys/vm/vm_page.c
>
> Modified: head/sys/vm/vm_page.c
> ==============================================================================
> --- head/sys/vm/vm_page.c       Mon Apr 20 14:24:13 2020        (r360121)
> +++ head/sys/vm/vm_page.c       Mon Apr 20 14:45:17 2020        (r360122)
> @@ -4438,7 +4438,7 @@ vm_page_acquire_unlocked(vm_object_t object, vm_pindex
>                  * without barriers.  Switch to radix to verify.
>                  */
>                 if (prev == NULL || (m = TAILQ_NEXT(prev, listq)) == NULL ||
> -                   m->pindex != pindex ||
> +                   QMD_IS_TRASHED(m) || m->pindex != pindex ||
>                     atomic_load_ptr(&m->object) != object) {
>                         prev = NULL;
>                         /*
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to