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; } {