Unified · Split
| @@ -466,7 +466,7 @@ _9pclunk(FFid *f) · 465 unmodified lines | ||
| 466 | 466 | { |
| 467 | 467 | Fcall tclunk, rclunk; |
| 468 | 468 | |
| 469 | − if(f == NULL) | |
| 469 | + if(f == NULL || f == rootfid) | |
| 470 | 470 | return 0; |
| 471 | 471 | tclunk.type = Tclunk; |
| 472 | 472 | tclunk.fid = f->fid; |
| @@ -511,7 +511,7 @@ lookupfid(u32int fid, int act) · 38 unmodified lines | ||
| 511 | 511 | break; |
| 512 | 512 | case DEL: |
| 513 | 513 | if(*floc == NULL || *floc == rootfid) |
| 514 | − return NULL; | |
| 514 | + return FDEL; | |
| 515 | 515 | f = *floc; |
| 516 | 516 | *floc = f->link; |
| 517 | 517 | free(f->path); |
| @@ -94,9 +94,9 @@ fsreleasedir(const char *path, struct fuse_file_info *ffi) · 93 unmodified lines | ||
| 94 | 94 | { |
| 95 | 95 | FFid *f; |
| 96 | 96 | |
| 97 | − if((FFid*)ffi->fh == NULL) | |
| 98 | − return 0; | |
| 99 | 97 | f = (FFid*)ffi->fh; |
| 98 | + if(f == NULL || f == rootfid) | |
| 99 | + return 0; | |
| 100 | 100 | if((f->qid.type & QTDIR) == 0) |
| 101 | 101 | return -ENOTDIR; |
| 102 | 102 | return _9pclunk(f); |