Re: [PATCH] BTRFS: Free inode mutex on lseek error

2011-08-20 Thread Josef Bacik
On 08/19/2011 08:07 PM, Andi Kleen wrote:
 From: Andi Kleen a...@linux.intel.com
 
 Introduced with b26751575a9aa55fd6dbf3febde3ff06dfadc44f
 

This has already been fixed by

9a4327ca1f45f82edad7dc0a4e52ce9316e0950c

Thanks,

Josef
--
To unsubscribe from this list: send the line unsubscribe linux-btrfs in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] BTRFS: Free inode mutex on lseek error

2011-08-20 Thread Andi Kleen
On Sat, Aug 20, 2011 at 08:08:25AM -0400, Josef Bacik wrote:
 On 08/19/2011 08:07 PM, Andi Kleen wrote:
  From: Andi Kleen a...@linux.intel.com
  
  Introduced with b26751575a9aa55fd6dbf3febde3ff06dfadc44f
  
 
 This has already been fixed by
 
 9a4327ca1f45f82edad7dc0a4e52ce9316e0950c

It's not. That patch returns the wrong return value.

-Andi

---

From 3c3bb2aa661c2b3405c53ac72e23fc663aea794f Mon Sep 17 00:00:00 2001
From: Andi Kleen a...@linux.intel.com
Date: Sat, 20 Aug 2011 05:49:47 -0700
Subject: [PATCH] BTRFS: Fix lseek return value for error

Introduced by 9a4327ca1f45f82edad7dc0a4e52ce9316e0950c

Signed-off-by: Andi Kleen a...@linux.intel.com

diff --git a/fs/btrfs/file.c b/fs/btrfs/file.c
index e7872e4..c6e493f 100644
--- a/fs/btrfs/file.c
+++ b/fs/btrfs/file.c
@@ -1814,19 +1814,17 @@ static loff_t btrfs_file_llseek(struct file *file, 
loff_t offset, int origin)
case SEEK_DATA:
case SEEK_HOLE:
ret = find_desired_extent(inode, offset, origin);
-   if (ret) {
-   mutex_unlock(inode-i_mutex);
-   return ret;
-   }
+   if (ret)
+   goto error;
}
 
if (offset  0  !(file-f_mode  FMODE_UNSIGNED_OFFSET)) {
ret = -EINVAL;
-   goto out;
+   goto error;
}
if (offset  inode-i_sb-s_maxbytes) {
ret = -EINVAL;
-   goto out;
+   goto error;
}
 
/* Special lock needed here? */
@@ -1837,6 +1835,9 @@ static loff_t btrfs_file_llseek(struct file *file, loff_t 
offset, int origin)
 out:
mutex_unlock(inode-i_mutex);
return offset;
+error:
+   mutex_unlock(inode-i_mutex);
+   return ret;
 }
 
 const struct file_operations btrfs_file_operations = {
--
To unsubscribe from this list: send the line unsubscribe linux-btrfs in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] BTRFS: Free inode mutex on lseek error

2011-08-20 Thread Josef Bacik
On Sat, Aug 20, 2011 at 02:53:17PM +0200, Andi Kleen wrote:
 On Sat, Aug 20, 2011 at 08:08:25AM -0400, Josef Bacik wrote:
  On 08/19/2011 08:07 PM, Andi Kleen wrote:
   From: Andi Kleen a...@linux.intel.com
   
   Introduced with b26751575a9aa55fd6dbf3febde3ff06dfadc44f
   
  
  This has already been fixed by
  
  9a4327ca1f45f82edad7dc0a4e52ce9316e0950c
 
 It's not. That patch returns the wrong return value.


Oh duh I see, sorry,

Josef 
--
To unsubscribe from this list: send the line unsubscribe linux-btrfs in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH] BTRFS: Free inode mutex on lseek error

2011-08-19 Thread Andi Kleen
From: Andi Kleen a...@linux.intel.com

Introduced with b26751575a9aa55fd6dbf3febde3ff06dfadc44f

Cc: jo...@redhat.com
Cc: chris.ma...@oracle.com
Signed-off-by: Andi Kleen a...@linux.intel.com
---
 fs/btrfs/file.c |   14 --
 1 files changed, 8 insertions(+), 6 deletions(-)

diff --git a/fs/btrfs/file.c b/fs/btrfs/file.c
index 658d669..8791613 100644
--- a/fs/btrfs/file.c
+++ b/fs/btrfs/file.c
@@ -1798,16 +1798,15 @@ static loff_t btrfs_file_llseek(struct file *file, 
loff_t offset, int origin)
case SEEK_DATA:
case SEEK_HOLE:
ret = find_desired_extent(inode, offset, origin);
-   if (ret) {
-   mutex_unlock(inode-i_mutex);
-   return ret;
-   }
+   if (ret)
+   goto error;
}
 
+   ret = -EINVAL;
if (offset  0  !(file-f_mode  FMODE_UNSIGNED_OFFSET))
-   return -EINVAL;
+   goto error;
if (offset  inode-i_sb-s_maxbytes)
-   return -EINVAL;
+   goto error;
 
/* Special lock needed here? */
if (offset != file-f_pos) {
@@ -1817,6 +1816,9 @@ static loff_t btrfs_file_llseek(struct file *file, loff_t 
offset, int origin)
 out:
mutex_unlock(inode-i_mutex);
return offset;
+error:
+   mutex_unlock(inode-i_mutex);
+   return ret;
 }
 
 const struct file_operations btrfs_file_operations = {
-- 
1.7.4.4

--
To unsubscribe from this list: send the line unsubscribe linux-btrfs in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html