!    if ((cdev->d_flag & D_NEGOFFSAFE) != 0 &&
   !        off != UVM_UNKNOWN_OFFSET && off < 0)
                return(NULL);
     
for those paying attention, this should be "== 0" in the first line.
i'd already fixed that in my tree, but posted the wrong patch.
.mrg.