]> Pileus Git - ~andy/linux/blobdiff - fs/udf/file.c
Merge tag 'rmobile-for-linus' of git://github.com/pmundt/linux-sh
[~andy/linux] / fs / udf / file.c
index d8ffa7cc661d2a28537bc8977c8902647b37b65e..dca0c3881e82df76352b4254c520b7bcc9ee2928 100644 (file)
@@ -125,7 +125,6 @@ static ssize_t udf_file_aio_write(struct kiocb *iocb, const struct iovec *iov,
                        err = udf_expand_file_adinicb(inode);
                        if (err) {
                                udf_debug("udf_expand_adinicb: err=%d\n", err);
-                               up_write(&iinfo->i_data_sem);
                                return err;
                        }
                } else {
@@ -133,9 +132,10 @@ static ssize_t udf_file_aio_write(struct kiocb *iocb, const struct iovec *iov,
                                iinfo->i_lenAlloc = pos + count;
                        else
                                iinfo->i_lenAlloc = inode->i_size;
+                       up_write(&iinfo->i_data_sem);
                }
-       }
-       up_write(&iinfo->i_data_sem);
+       } else
+               up_write(&iinfo->i_data_sem);
 
        retval = generic_file_aio_write(iocb, iov, nr_segs, ppos);
        if (retval > 0)