diff options
| author | Arnd Bergmann <arnd@arndb.de> | 2011-10-07 23:07:41 +0200 | 
|---|---|---|
| committer | Arnd Bergmann <arnd@arndb.de> | 2011-10-07 23:07:41 +0200 | 
| commit | 8efc59ad6764ade520012cb192cd484e5191cd9c (patch) | |
| tree | d2465d91ebb2652e35cd08f715fc202b3f9e042a /fs/btrfs/file.c | |
| parent | 6f6184a9d01880a3e21349544f73b3720ce5e152 (diff) | |
| parent | 492c4a0df11573e141a2decc6012b3bddd14a11e (diff) | |
Merge branch 'sirf/cleanup' into next/cleanup
Diffstat (limited to 'fs/btrfs/file.c')
| -rw-r--r-- | fs/btrfs/file.c | 9 | 
1 files changed, 7 insertions, 2 deletions
diff --git a/fs/btrfs/file.c b/fs/btrfs/file.c index 3c3abff731a7..a381cd22f518 100644 --- a/fs/btrfs/file.c +++ b/fs/btrfs/file.c @@ -1817,6 +1817,11 @@ static loff_t btrfs_file_llseek(struct file *file, loff_t offset, int origin)  		goto out;  	case SEEK_DATA:  	case SEEK_HOLE: +		if (offset >= i_size_read(inode)) { +			mutex_unlock(&inode->i_mutex); +			return -ENXIO; +		} +  		ret = find_desired_extent(inode, &offset, origin);  		if (ret) {  			mutex_unlock(&inode->i_mutex); @@ -1825,11 +1830,11 @@ static loff_t btrfs_file_llseek(struct file *file, loff_t offset, int origin)  	}  	if (offset < 0 && !(file->f_mode & FMODE_UNSIGNED_OFFSET)) { -		ret = -EINVAL; +		offset = -EINVAL;  		goto out;  	}  	if (offset > inode->i_sb->s_maxbytes) { -		ret = -EINVAL; +		offset = -EINVAL;  		goto out;  	}  | 
