Hi Linus,
  when grab_cache_page was added to kernel, someone who did global
kernel search & replace swapped grab_cache_page and find_lock_page 
in ncpfs :-( Because of ncpfs requires page allocation to success, 
it did not work as it did find instead of allocation... These 
changes are limited to linux/fs/ncpfs/dir.c.
  Except that, as support for upcoming new version of ncpfs, could
you apply rest of patch (linux/fs/ncpfs/Config.in and 
linux/fs/ncpfs/ioctl.c). Change in Config.in is only enabling
(and renaming) configuration item prepared for long time.
Changes in linux/fs/ncpfs/ioctl.c make sure that no-one except
user (and root :-( ) can read your current session info from kernel.
  Thanks for applying this.
                                        Best regards,
                                                Petr Vandrovec
                                                [EMAIL PROTECTED]


diff -urdN linux/fs/ncpfs/dir.c linux/fs/ncpfs/dir.c
--- linux/fs/ncpfs/dir.c        Fri Dec  3 14:54:40 1999
+++ linux/fs/ncpfs/dir.c        Fri Dec  3 18:31:40 1999
@@ -487,7 +487,7 @@
                filp->f_pos = 2;
        }
 
-       page = find_lock_page(&inode->i_data, 0);
+       page = grab_cache_page(&inode->i_data, 0);
        if (!page)
                goto read_really;
 
@@ -516,7 +516,7 @@
 
        for (;;) {
                if (ctl.ofs != 0) {
-                       ctl.page = grab_cache_page(&inode->i_data, ctl.ofs);
+                       ctl.page = find_lock_page(&inode->i_data, ctl.ofs);
                        if (!ctl.page)
                                goto invalid_cache;
                        ctl.cache = (union ncp_dir_cache *)
@@ -661,7 +661,7 @@
                ctl.cache = NULL;
                ctl.idx  -= NCP_DIRCACHE_SIZE;
                ctl.ofs  += 1;
-               ctl.page  = find_lock_page(&inode->i_data, ctl.ofs);
+               ctl.page  = grab_cache_page(&inode->i_data, ctl.ofs);
                if (ctl.page)
                        ctl.cache = (union ncp_dir_cache *)
                                        kmap(ctl.page);
diff -urdN linux/fs/ncpfs/Config.in linux/fs/ncpfs/Config.in
--- linux/fs/ncpfs/Config.in    Thu Oct  7 17:17:09 1999
+++ linux/fs/ncpfs/Config.in    Fri Dec  3 14:56:40 1999
@@ -10,6 +10,6 @@
    bool '    Lowercase DOS filenames' CONFIG_NCPFS_SMALLDOS
 fi
 bool '  Allow mounting of volume subdirectories' CONFIG_NCPFS_MOUNT_SUBDIR
-# bool '  NDS interserver authentication support' CONFIG_NCPFS_NDS_DOMAINS
+bool '  NDS authentication support' CONFIG_NCPFS_NDS_DOMAINS
 bool '  Use Native Language Support' CONFIG_NCPFS_NLS
 bool '  Enable symbolic links and execute flags' CONFIG_NCPFS_EXTRAS
diff -urdN linux/fs/ncpfs/ioctl.c linux/fs/ncpfs/ioctl.c
--- linux/fs/ncpfs/ioctl.c      Fri Oct 29 17:53:32 1999
+++ linux/fs/ncpfs/ioctl.c      Fri Dec  3 14:56:44 1999
@@ -364,8 +364,7 @@
 
 #ifdef CONFIG_NCPFS_NDS_DOMAINS
        case NCP_IOC_GETOBJECTNAME:
-               if (   (permission(inode, MAY_READ) != 0)
-                   && (current->uid != server->m.mounted_uid)) {
+               if (current->uid != server->m.mounted_uid) {
                        return -EACCES;
                }
                {
@@ -396,8 +395,7 @@
                        return 0;
                }
        case NCP_IOC_SETOBJECTNAME:
-               if (   (permission(inode, MAY_WRITE) != 0)
-                   && (current->uid != server->m.mounted_uid)) {
+               if (current->uid != server->m.mounted_uid) {
                        return -EACCES;
                }
                {
@@ -441,8 +439,7 @@
                        return 0;
                }
        case NCP_IOC_GETPRIVATEDATA:
-               if (   (permission(inode, MAY_READ) != 0)
-                   && (current->uid != server->m.mounted_uid)) {
+               if (current->uid != server->m.mounted_uid) {
                        return -EACCES;
                }
                {
@@ -471,8 +468,7 @@
                        return 0;
                }
        case NCP_IOC_SETPRIVATEDATA:
-               if (   (permission(inode, MAY_WRITE) != 0)
-                   && (current->uid != server->m.mounted_uid)) {
+               if (current->uid != server->m.mounted_uid) {
                        return -EACCES;
                }
                {

Reply via email to