diff options
| -rw-r--r-- | kernel/fs.c | 4 | 
1 files changed, 3 insertions, 1 deletions
| 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; tot<n; tot+=m, off+=m, src+=m){      bp = bread(ip->dev, 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);    } | 
