summaryrefslogtreecommitdiff
path: root/sys/src
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@felloff.net>2015-06-18 03:13:50 +0200
committercinap_lenrek <cinap_lenrek@felloff.net>2015-06-18 03:13:50 +0200
commit58dc03cec0df3cf569f73ea90d71f17e6a3dc84d (patch)
tree89b5471097c59b358f82c1f7d1336ccaece19bc2 /sys/src
parentb48078c12cdf0e3b718e38102b7548c14bed33a4 (diff)
kernel: do not inherit Proc.dot (current working directory) in kproc()
making sure to close the dot in every kproc appears repetitive, so instead stop inheriting the dot in kproc() as this is usually never what you wanted in the first place.
Diffstat (limited to 'sys/src')
-rw-r--r--sys/src/9/port/proc.c2
-rw-r--r--sys/src/9/port/segment.c4
-rw-r--r--sys/src/9/port/swap.c4
-rw-r--r--sys/src/9/zynq/screen.c8
4 files changed, 1 insertions, 17 deletions
diff --git a/sys/src/9/port/proc.c b/sys/src/9/port/proc.c
index 766ab52b9..eadca93ec 100644
--- a/sys/src/9/port/proc.c
+++ b/sys/src/9/port/proc.c
@@ -1387,7 +1387,7 @@ kproc(char *name, void (*func)(void *), void *arg)
p->s = up->s;
p->nerrlab = 0;
p->slash = up->slash;
- p->dot = up->dot;
+ p->dot = up->slash; /* unlike fork, do not inherit the dot for kprocs */
if(p->dot != nil)
incref(p->dot);
diff --git a/sys/src/9/port/segment.c b/sys/src/9/port/segment.c
index c2ad137f1..a15f928cc 100644
--- a/sys/src/9/port/segment.c
+++ b/sys/src/9/port/segment.c
@@ -837,10 +837,6 @@ segmentioproc(void *arg)
incref(sio->s);
up->seg[sno] = sio->s;
- cclose(up->dot);
- up->dot = up->slash;
- incref(up->dot);
-
while(waserror())
;
for(done = 0; !done;){
diff --git a/sys/src/9/port/swap.c b/sys/src/9/port/swap.c
index efbf3cbb4..73d12345a 100644
--- a/sys/src/9/port/swap.c
+++ b/sys/src/9/port/swap.c
@@ -149,10 +149,6 @@ pager(void*)
Segment *s;
Proc *p, *ep;
- cclose(up->dot);
- up->dot = up->slash;
- incref(up->dot);
-
p = proctab(0);
ep = &p[conf.nproc];
diff --git a/sys/src/9/zynq/screen.c b/sys/src/9/zynq/screen.c
index dbed776c9..fcf3a365c 100644
--- a/sys/src/9/zynq/screen.c
+++ b/sys/src/9/zynq/screen.c
@@ -116,10 +116,6 @@ cursorproc(void *arg)
up->seg[i] = arg;
- cclose(up->dot);
- up->dot = up->slash;
- incref(up->dot);
-
hwcursor.proc = up;
if(waserror()){
hwcursor.addr = 0;
@@ -204,10 +200,6 @@ screenproc(void *arg)
up->seg[sno] = arg;
- cclose(up->dot);
- up->dot = up->slash;
- incref(up->dot);
-
fbscreen.proc = up;
if(waserror()){
fbscreen.addr = 0;