| Kernel v2.4.11 /fs/attr.c |
|---|
 2.4.11
 fs
 attr.c
diff -u --recursive --new-file v2.4.10/linux/fs/attr.c linux/fs/attr.c
--- v2.4.10/linux/fs/attr.c Sun Sep 23 11:41:00 2001
+++ linux/fs/attr.c Fri Oct 5 12:23:53 2001
@@ -11,6 +11,7 @@
#include <linux/smp_lock.h>
#include <linux/dnotify.h>
#include <linux/fcntl.h>
+#include <linux/quotaops.h>
/* Taken over from the old code... */
@@ -131,8 +132,13 @@
error = inode->i_op->setattr(dentry, attr);
else {
error = inode_change_ok(inode, attr);
- if (!error)
- inode_setattr(inode, attr);
+ if (!error) {
+ if ((ia_valid & ATTR_UID && attr->ia_uid != inode->i_uid) ||
+ (ia_valid & ATTR_GID && attr->ia_gid != inode->i_gid))
+ error = DQUOT_TRANSFER(inode, attr) ? -EDQUOT : 0;
+ if (!error)
+ inode_setattr(inode, attr);
+ }
}
unlock_kernel();
if (!error) {
|