Module Name: src Committed By: riz Date: Sat Jun 12 18:38:02 UTC 2010
Modified Files: src/sys/compat/common [netbsd-4]: vfs_syscalls_30.c src/sys/compat/ibcs2 [netbsd-4]: ibcs2_misc.c src/sys/compat/irix [netbsd-4]: irix_dirent.c src/sys/compat/linux/common [netbsd-4]: linux_file64.c linux_misc.c src/sys/compat/sunos [netbsd-4]: sunos_misc.c src/sys/compat/sunos32 [netbsd-4]: sunos32_misc.c src/sys/compat/svr4 [netbsd-4]: svr4_misc.c src/sys/compat/svr4_32 [netbsd-4]: svr4_32_misc.c Log Message: Pull up following revision(s) (requested by he in ticket #1387): sys/compat/svr4/svr4_misc.c: revision 1.149 sys/compat/linux/common/linux_misc.c: revision 1.214 sys/compat/common/vfs_syscalls_30.c: revision 1.31 sys/compat/sunos/sunos_misc.c: revision 1.166 sys/compat/linux/common/linux_file64.c: revision 1.50 sys/compat/svr4_32/svr4_32_misc.c: revision 1.68 sys/compat/ibcs2/ibcs2_misc.c: revision 1.110 sys/compat/linux32/common/linux32_dirent.c: revision 1.10 sys/compat/sunos32/sunos32_misc.c: revision 1.69 sys/compat/irix/irix_dirent.c: revision 1.24 sys/compat/osf1/osf1_file.c: revision 1.38 When implementing "read directory", when there are too many empty entries in a row, and we need to try to read the next block, and have passed a non-NULL cookie pointer to VOP_READDIR, ensure that we free the cookie buffer before re-doing VOP_READDIR, so that we don't leak memory. This fix is similar to nfs_serv.c revisions 1.115 + 1.124. This should fix the long-standing problem observed by e.g. using Linux- emulated programs to take backup of servers, which is one of the problems which were reported in PR#42661. Thanks to pooka@ for the hints for traversing the VOP* layer. To generate a diff of this commit: cvs rdiff -u -r1.18 -r1.18.2.1 src/sys/compat/common/vfs_syscalls_30.c cvs rdiff -u -r1.81 -r1.81.2.1 src/sys/compat/ibcs2/ibcs2_misc.c cvs rdiff -u -r1.16 -r1.16.18.1 src/sys/compat/irix/irix_dirent.c cvs rdiff -u -r1.34 -r1.34.8.1 src/sys/compat/linux/common/linux_file64.c cvs rdiff -u -r1.165.2.2 -r1.165.2.3 src/sys/compat/linux/common/linux_misc.c cvs rdiff -u -r1.143 -r1.143.2.1 src/sys/compat/sunos/sunos_misc.c cvs rdiff -u -r1.42 -r1.42.2.1 src/sys/compat/sunos32/sunos32_misc.c cvs rdiff -u -r1.121 -r1.121.2.1 src/sys/compat/svr4/svr4_misc.c cvs rdiff -u -r1.39 -r1.39.2.1 src/sys/compat/svr4_32/svr4_32_misc.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.