quota.c (020abf03cd659388f94cb328e1e1df0656e0d7ff) | quota.c (815d405ceff0d6964683f033e18b9b23a88fba87) |
---|---|
1/* 2 * Quota code necessary even when VFS quota support is not compiled 3 * into the kernel. The interesting stuff is over in dquot.c, here 4 * we have symbols for initial quotactl(2) handling, the sysctl(2) 5 * variables, etc - things needed even when quota support disabled. 6 */ 7 8#include <linux/fs.h> --- 341 unchanged lines hidden (view full) --- 350 } 351 352 /* 353 * Path for quotaon has to be resolved before grabbing superblock 354 * because that gets s_umount sem which is also possibly needed by path 355 * resolution (think about autofs) and thus deadlocks could arise. 356 */ 357 if (cmds == Q_QUOTAON) { | 1/* 2 * Quota code necessary even when VFS quota support is not compiled 3 * into the kernel. The interesting stuff is over in dquot.c, here 4 * we have symbols for initial quotactl(2) handling, the sysctl(2) 5 * variables, etc - things needed even when quota support disabled. 6 */ 7 8#include <linux/fs.h> --- 341 unchanged lines hidden (view full) --- 350 } 351 352 /* 353 * Path for quotaon has to be resolved before grabbing superblock 354 * because that gets s_umount sem which is also possibly needed by path 355 * resolution (think about autofs) and thus deadlocks could arise. 356 */ 357 if (cmds == Q_QUOTAON) { |
358 ret = user_path_at(AT_FDCWD, addr, LOOKUP_FOLLOW, &path); | 358 ret = user_path_at(AT_FDCWD, addr, LOOKUP_FOLLOW|LOOKUP_AUTOMOUNT, &path); |
359 if (ret) 360 pathp = ERR_PTR(ret); 361 else 362 pathp = &path; 363 } 364 365 sb = quotactl_block(special); 366 if (IS_ERR(sb)) 367 return PTR_ERR(sb); 368 369 ret = do_quotactl(sb, type, cmds, id, addr, pathp); 370 371 drop_super(sb); 372 if (pathp && !IS_ERR(pathp)) 373 path_put(pathp); 374 return ret; 375} | 359 if (ret) 360 pathp = ERR_PTR(ret); 361 else 362 pathp = &path; 363 } 364 365 sb = quotactl_block(special); 366 if (IS_ERR(sb)) 367 return PTR_ERR(sb); 368 369 ret = do_quotactl(sb, type, cmds, id, addr, pathp); 370 371 drop_super(sb); 372 if (pathp && !IS_ERR(pathp)) 373 path_put(pathp); 374 return ret; 375} |