On Tuesday, March 18, 2014 3:29:32 pm Maksim Yevmenkin wrote:
> hello,
> 
> would anyone object to the following patch?

I think this is fine.

While you are at it, can you test this patch to remove D_NEEDGIANT?

Index: subr_devstat.c
===================================================================
--- subr_devstat.c      (revision 263302)
+++ subr_devstat.c      (working copy)
@@ -460,7 +460,6 @@ static d_mmap_t devstat_mmap;
 
 static struct cdevsw devstat_cdevsw = {
        .d_version =    D_VERSION,
-       .d_flags =      D_NEEDGIANT,
        .d_mmap =       devstat_mmap,
        .d_name =       "devstat",
 };
@@ -482,13 +481,16 @@ devstat_mmap(struct cdev *dev, vm_ooffset_t offset
 
        if (nprot != VM_PROT_READ)
                return (-1);
+       mtx_lock(&devstat_mutex);
        TAILQ_FOREACH(spp, &pagelist, list) {
                if (offset == 0) {
                        *paddr = vtophys(spp->stat);
+                       mtx_unlock(&devstat_mutex);
                        return (0);
                }
                offset -= PAGE_SIZE;
        }
+       mtx_unlock(&devstat_mutex);
        return (-1);
 }
 

-- 
John Baldwin
_______________________________________________
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to "freebsd-current-unsubscr...@freebsd.org"

Reply via email to