diff options
author | Cyrill Gorcunov <gorcunov@gmail.com> | 2008-03-03 13:54:21 -0500 |
---|---|---|
committer | Steven Whitehouse <swhiteho@redhat.com> | 2008-03-31 05:41:28 -0400 |
commit | 182fe5abd8ebbb3a00c1be91f44e4783e139918c (patch) | |
tree | 7404993656166f2b7cb78e54e4275d44336ba27c /fs/gfs2/ops_inode.c | |
parent | 105284970ba7d0d0ff4b97e57728eac7adf6a42a (diff) |
[GFS2] possible null pointer dereference fixup
gfs2_alloc_get may fail so we have to check it to prevent
NULL pointer dereference.
Signed-off-by: Cyrill Gorcunov <gorcunov@gamil.com>
Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
Diffstat (limited to 'fs/gfs2/ops_inode.c')
-rw-r--r-- | fs/gfs2/ops_inode.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/fs/gfs2/ops_inode.c b/fs/gfs2/ops_inode.c index 6cbbb5b46ce4..34fe571e15ee 100644 --- a/fs/gfs2/ops_inode.c +++ b/fs/gfs2/ops_inode.c | |||
@@ -200,6 +200,10 @@ static int gfs2_link(struct dentry *old_dentry, struct inode *dir, | |||
200 | 200 | ||
201 | if (alloc_required) { | 201 | if (alloc_required) { |
202 | struct gfs2_alloc *al = gfs2_alloc_get(dip); | 202 | struct gfs2_alloc *al = gfs2_alloc_get(dip); |
203 | if (!al) { | ||
204 | error = -ENOMEM; | ||
205 | goto out_gunlock; | ||
206 | } | ||
203 | 207 | ||
204 | error = gfs2_quota_lock(dip, NO_QUOTA_CHANGE, NO_QUOTA_CHANGE); | 208 | error = gfs2_quota_lock(dip, NO_QUOTA_CHANGE, NO_QUOTA_CHANGE); |
205 | if (error) | 209 | if (error) |
@@ -716,6 +720,10 @@ static int gfs2_rename(struct inode *odir, struct dentry *odentry, | |||
716 | 720 | ||
717 | if (alloc_required) { | 721 | if (alloc_required) { |
718 | struct gfs2_alloc *al = gfs2_alloc_get(ndip); | 722 | struct gfs2_alloc *al = gfs2_alloc_get(ndip); |
723 | if (!al) { | ||
724 | error = -ENOMEM; | ||
725 | goto out_gunlock; | ||
726 | } | ||
719 | 727 | ||
720 | error = gfs2_quota_lock(ndip, NO_QUOTA_CHANGE, NO_QUOTA_CHANGE); | 728 | error = gfs2_quota_lock(ndip, NO_QUOTA_CHANGE, NO_QUOTA_CHANGE); |
721 | if (error) | 729 | if (error) |
@@ -953,7 +961,8 @@ static int setattr_chown(struct inode *inode, struct iattr *attr) | |||
953 | if (!(attr->ia_valid & ATTR_GID) || ogid == ngid) | 961 | if (!(attr->ia_valid & ATTR_GID) || ogid == ngid) |
954 | ogid = ngid = NO_QUOTA_CHANGE; | 962 | ogid = ngid = NO_QUOTA_CHANGE; |
955 | 963 | ||
956 | gfs2_alloc_get(ip); | 964 | if (!gfs2_alloc_get(ip)) |
965 | return -ENOMEM; | ||
957 | 966 | ||
958 | error = gfs2_quota_lock(ip, nuid, ngid); | 967 | error = gfs2_quota_lock(ip, nuid, ngid); |
959 | if (error) | 968 | if (error) |