/*
* If the EXT3_FEATURE_COMPAT_EXT_ATTR feature of this file system is
* not set, set it.
-@@ -480,6 +691,101 @@
+@@ -480,6 +691,102 @@
*/
int
ext3_xattr_set_handle(handle_t *handle, struct inode *inode, int name_index,
+ if (err != 0 && err != -ENOENT) {
+ /* not found EA in block */
+ goto finish;
++ } else if (err == 0) {
++ /* found EA in block */
++ where = 1;
++ found = 1;
+ }
-+ /* found EA in block */
-+ where = 1;
-+ found = 1;
+ } else
+ goto finish;
+
+ &dentry->d_name, 0, NULL);
+ d_invalidate(dentry);
+ dput(dentry);
-+ if (IS_ERR(new)) {
-+ err = PTR_ERR(new);
-+ break;
-+ }
-+ nd->dentry = new;
++ if (IS_ERR(new)) {
++ err = PTR_ERR(new);
++ break;
++ }
++ nd->dentry = new;
+ }
+ } else
if (dentry && dentry->d_op && dentry->d_op->d_revalidate) {
{
struct inode * inode = dentry->d_inode;
- if (inode->i_op && inode->i_op->revalidate)
-+ if (!inode)
-+ return -ENOENT;
++ if (!inode)
++ return -ENOENT;
+ if (inode->i_op && inode->i_op->revalidate_it)
+ return inode->i_op->revalidate_it(dentry, it);
+ else if (inode->i_op && inode->i_op->revalidate)
+ void (*d_unpin)(struct dentry *, struct vfsmount *, int);
};
-+#define PIN(de,mnt,flag) if (de->d_op && de->d_op->d_pin) \
++#define PIN(de,mnt,flag) if (de && de->d_op && de->d_op->d_pin) \
+ de->d_op->d_pin(de, mnt, flag);
-+#define UNPIN(de,mnt,flag) if (de->d_op && de->d_op->d_unpin) \
++#define UNPIN(de,mnt,flag) if (de && de->d_op && de->d_op->d_unpin) \
+ de->d_op->d_unpin(de, mnt, flag);
+
+
+ &dentry->d_name, 0, NULL);
+ d_invalidate(dentry);
+ dput(dentry);
-+ if (IS_ERR(new)) {
-+ err = PTR_ERR(new);
-+ break;
-+ }
-+ nd->dentry = new;
++ if (IS_ERR(new)) {
++ err = PTR_ERR(new);
++ break;
++ }
++ nd->dentry = new;
+ }
+ } else
if (dentry && dentry->d_op && dentry->d_op->d_revalidate) {
+ void (*d_unpin)(struct dentry *, struct vfsmount *, int);
};
-+#define PIN(de,mnt,flag) if (de->d_op && de->d_op->d_pin) \
++#define PIN(de,mnt,flag) if (de && de->d_op && de->d_op->d_pin) \
+ de->d_op->d_pin(de, mnt, flag);
-+#define UNPIN(de,mnt,flag) if (de->d_op && de->d_op->d_unpin) \
++#define UNPIN(de,mnt,flag) if (de && de->d_op && de->d_op->d_unpin) \
+ de->d_op->d_unpin(de, mnt, flag);
+
+