diff --git a/kernel/fs.c b/kernel/fs.c index 454d52b..da9bcca 100644 --- a/kernel/fs.c +++ b/kernel/fs.c @@ -495,8 +495,10 @@ writei(struct inode *ip, int user_src, uint64 src, uint off, uint n) for(tot=0; totdev, bmap(ip, off/BSIZE)); m = min(n - tot, BSIZE - off%BSIZE); - if(either_copyin(bp->data + (off % BSIZE), user_src, src, m) == -1) + if(either_copyin(bp->data + (off % BSIZE), user_src, src, m) == -1) { + brelse(bp); break; + } log_write(bp); brelse(bp); }