diff options
Diffstat (limited to 'fs/filesystems.c')
| -rw-r--r-- | fs/filesystems.c | 14 | 
1 files changed, 9 insertions, 5 deletions
| diff --git a/fs/filesystems.c b/fs/filesystems.c index 58b9067b2391..95e5256821a5 100644 --- a/fs/filesystems.c +++ b/fs/filesystems.c @@ -156,15 +156,19 @@ static int fs_index(const char __user * __name)  static int fs_name(unsigned int index, char __user * buf)  {  	struct file_system_type * tmp; -	int len, res; +	int len, res = -EINVAL;  	read_lock(&file_systems_lock); -	for (tmp = file_systems; tmp; tmp = tmp->next, index--) -		if (index <= 0 && try_module_get(tmp->owner)) +	for (tmp = file_systems; tmp; tmp = tmp->next, index--) { +		if (index == 0) { +			if (try_module_get(tmp->owner)) +				res = 0;  			break; +		} +	}  	read_unlock(&file_systems_lock); -	if (!tmp) -		return -EINVAL; +	if (res) +		return res;  	/* OK, we got the reference, so we can safely block */  	len = strlen(tmp->name) + 1; | 
