M port/devcons.c => port/devcons.c +1 -3
@@ 448,9 448,6 @@ consopen(Chan *c, int omode)
error(Eperm);
incref(&ctl);
break;
- case Qswap:
- kickpager(); /* start a pager if not already started */
- break;
}
c->aux = 0;
return devopen(c, omode, consdir, NCONS, devgen);
@@ 850,6 847,7 @@ conswrite(Chan *c, void *va, long n, ulong offset)
break;
case Qswap:
+ kickpager(); /* start a pager if not already started */
if(conf.cntrlp && strcmp(u->p->user, eve) != 0)
error(Eperm);
if(n >= sizeof buf)
M port/devroot.c => port/devroot.c +1 -1
@@ 95,7 95,7 @@ rootwalk(Chan *c, char *name)
return 1;
}
if((c->qid.path & ~CHDIR) != Qdir)
- error(Enonexist);
+ return 0;
return devwalk(c, name, rootdir, nroot, rootgen);
}
M port/devsrv.c => port/devsrv.c +5 -0
@@ 199,9 199,14 @@ srvwrite(Chan *c, void *va, long n, ulong offset)
fd = strtoul(buf, 0, 0);
f = u->p->fgrp;
lock(f);
+ if(waserror()){
+ unlock(f);
+ nexterror();
+ }
fdtochan(fd, -1, 0); /* error check only */
srv[i].chan = f->fd[fd];
incref(srv[i].chan);
unlock(f);
+ poperror();
return n;
}
M port/fault.c => port/fault.c +0 -1
@@ 280,7 280,6 @@ validaddr(ulong addr, ulong len, int write)
}
pprint("invalid address 0x%lux in sys call pc=0x%lux", addr, userpc());
- postnote(u->p, 1, "sys: bad address", NDebug);
error(Ebadarg);
}