FAQ Search Today's Posts Mark Forums Read
» Video Reviews

» Linux Archive

Linux-archive is a website aiming to archive linux email lists and to make them easily accessible for linux users/developers.


» Sponsor

» Partners

» Sponsor

Go Back   Linux Archive > Ubuntu > Ubuntu Kernel Team

 
 
LinkBack Thread Tools
 
Old 02-16-2012, 04:11 PM
Colin King
 
Default ecryptfs: read on a directory should return EISDIR if not supported

From: Colin Ian King <colin.king@canonical.com>

SRU Justification:

Impact: Read on an ecryptfs directory should return EISDIR if not
supported however currently EINVAL is being returned rather than
EISDIR.

Fix: With this patch a .read operation for ecryptfs directories is
connected up to generic_read_dir() which then performs the correct
behavior.

Testcase:

$ mkdir foo
$ grep blah foo
grep: foo: Invalid argument
$ strace -fe open,read grep blah foo
[snip]
open("foo", O_RDONLY) = 3
read(3, 0x19a1000, 32768) = -1 EINVAL (Invalid argument)
[snip]

whereas with the fix, read returns:

read(3, 0x120d000, 32768) = -1 EISDIR (Is a directory)

This is a clean cherry pick of commit 323ef68faf1bbd9b1e66aea268fd09d358d7e8ab

Andy Whitcroft (1):
ecryptfs: read on a directory should return EISDIR if not supported

fs/ecryptfs/file.c | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)


--
kernel-team mailing list
kernel-team@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/kernel-team
 
Old 02-16-2012, 04:11 PM
Colin King
 
Default ecryptfs: read on a directory should return EISDIR if not supported

From: Andy Whitcroft <apw@canonical.com>

read() calls against a file descriptor connected to a directory are
incorrectly returning EINVAL rather than EISDIR:

[EISDIR]
[XSI] [Option Start] The fildes argument refers to a directory and the
implementation does not allow the directory to be read using read()
or pread(). The readdir() function should be used instead. [Option End]

This occurs because we do not have a .read operation defined for
ecryptfs directories. Connect this up to generic_read_dir().

BugLink: http://bugs.launchpad.net/bugs/719691
Signed-off-by: Andy Whitcroft <apw@canonical.com>
Signed-off-by: Tyler Hicks <tyhicks@linux.vnet.ibm.com>
(cherry picked from commit 323ef68faf1bbd9b1e66aea268fd09d358d7e8ab)
Signed-off-by: Colin Ian King <colin.king@canonical.com>
---
fs/ecryptfs/file.c | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/fs/ecryptfs/file.c b/fs/ecryptfs/file.c
index d8adc51..3015389 100644
--- a/fs/ecryptfs/file.c
+++ b/fs/ecryptfs/file.c
@@ -323,6 +323,7 @@ ecryptfs_compat_ioctl(struct file *file, unsigned int cmd, unsigned long arg)

const struct file_operations ecryptfs_dir_fops = {
.readdir = ecryptfs_readdir,
+ .read = generic_read_dir,
.unlocked_ioctl = ecryptfs_unlocked_ioctl,
#ifdef CONFIG_COMPAT
.compat_ioctl = ecryptfs_compat_ioctl,
--
1.7.0.4


--
kernel-team mailing list
kernel-team@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/kernel-team
 

Thread Tools




All times are GMT. The time now is 10:37 AM.

VBulletin, Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO ©2007, Crawlability, Inc.
Copyright 2007 - 2008, www.linux-archive.org