From: Trond Myklebust The following patch fixes a bug when initializing the intent structure in sys_uselib(): intents use the FMODE_READ convention rather than O_RDONLY. It also adds a missing open intent to open_exec(). This ensures that NFS clients will do the necessary close-to-open data cache consistency checking. --- fs/exec.c | 10 +++++++--- 1 files changed, 7 insertions(+), 3 deletions(-) diff -puN fs/exec.c~nfs-open-intent-fix fs/exec.c --- 25/fs/exec.c~nfs-open-intent-fix 2004-01-08 18:38:39.000000000 -0800 +++ 25-akpm/fs/exec.c 2004-01-08 18:38:39.000000000 -0800 @@ -121,7 +121,7 @@ asmlinkage long sys_uselib(const char __ struct nameidata nd; int error; - nd.intent.open.flags = O_RDONLY; + nd.intent.open.flags = FMODE_READ; error = __user_walk(library, LOOKUP_FOLLOW|LOOKUP_OPEN, &nd); if (error) goto out; @@ -471,8 +471,12 @@ static inline void free_arg_pages(struct struct file *open_exec(const char *name) { struct nameidata nd; - int err = path_lookup(name, LOOKUP_FOLLOW, &nd); - struct file *file = ERR_PTR(err); + int err; + struct file *file; + + nd.intent.open.flags = FMODE_READ; + err = path_lookup(name, LOOKUP_FOLLOW|LOOKUP_OPEN, &nd); + file = ERR_PTR(err); if (!err) { struct inode *inode = nd.dentry->d_inode; _