Fixes #K open
authorBarret Rhoden <brho@cs.berkeley.edu>
Mon, 29 Sep 2014 04:27:42 +0000 (21:27 -0700)
committerBarret Rhoden <brho@cs.berkeley.edu>
Mon, 29 Sep 2014 04:27:42 +0000 (21:27 -0700)
You need to process omode with openmode() before doing an equality check
with OREAD/O_RDONLY (which == 0, btw...).

This was breaking the ability to bind #K or bind -b.  bind -a worked.
Similarly, ls \#K failed, but cat \#K worked.  The ls-cat check is the
usual way to detect this stuff (it's come up before).

kern/drivers/dev/kprof.c

index edf2f19..476a279 100644 (file)
@@ -197,7 +197,7 @@ static struct chan*
 kprofopen(struct chan *c, int omode)
 {
        if(c->qid.type & QTDIR){
-               if(omode != OREAD)
+               if(openmode(omode) != OREAD)
                        error(Eperm);
        }
        c->mode = openmode(omode);