Branch: refs/heads/master Home: https://github.com/qemu/qemu Commit: 6069537f4336a59054afda91a6545d3648c64619 https://github.com/qemu/qemu/commit/6069537f4336a59054afda91a6545d3648c64619 Author: Jan Dakinevich <jan.dakinev...@gmail.com> Date: 2017-09-20 (Wed, 20 Sep 2017)
Changed paths: M hw/9pfs/9p.c Log Message: ----------- 9pfs: fix readdir() for 9p2000.u If the client is using 9p2000.u, the following occurs: $ cd ${virtfs_shared_dir} $ mkdir -p a/b/c $ ls a/b ls: cannot access 'a/b/a': No such file or directory ls: cannot access 'a/b/b': No such file or directory a b c instead of the expected: $ ls a/b c This is a regression introduced by commit f57f5878578a; local_name_to_path() now resolves ".." and "." in paths, and v9fs_do_readdir_with_stat()->stat_to_v9stat() then copies the basename of the resulting path to the response. With the example above, this means that "." and ".." are turned into "b" and "a" respectively... stat_to_v9stat() currently assumes it is passed a full canonicalized path and uses it to do two different things: 1) to pass it to v9fs_co_readlink() in case the file is a symbolic link 2) to set the name field of the V9fsStat structure to the basename part of the given path It only has two users: v9fs_stat() and v9fs_do_readdir_with_stat(). v9fs_stat() really needs 1) and 2) to be performed since it starts with the full canonicalized path stored in the fid. It is different for v9fs_do_readdir_with_stat() though because the name we want to put into the V9fsStat structure is the d_name field of the dirent actually (ie, we want to keep the "." and ".." special names). So, we only need 1) in this case. This patch hence adds a basename argument to stat_to_v9stat(), to be used to set the name field of the V9fsStat structure, and moves the basename logic to v9fs_stat(). Signed-off-by: Jan Dakinevich <jan.dakinev...@gmail.com> (groug, renamed old name argument to path and updated changelog) Signed-off-by: Greg Kurz <gr...@kaod.org> Commit: 4d8bc7334b06ef01a21cad3d1eb8dc183037a06b https://github.com/qemu/qemu/commit/4d8bc7334b06ef01a21cad3d1eb8dc183037a06b Author: Jan Dakinevich <jan.dakinev...@gmail.com> Date: 2017-09-20 (Wed, 20 Sep 2017) Changed paths: M hw/9pfs/9p.c Log Message: ----------- 9pfs: fix name_to_path assertion in v9fs_complete_rename() The third parameter of v9fs_co_name_to_path() must not contain `/' character. The issue is most likely related to 9p2000.u protocol only. Signed-off-by: Jan Dakinevich <jan.dakinev...@gmail.com> [groug, regression caused by commit f57f5878578a # 2.10] Signed-off-by: Greg Kurz <gr...@kaod.org> Commit: 772a73692ecb52bace0cff6f95df62f59b8cabe0 https://github.com/qemu/qemu/commit/772a73692ecb52bace0cff6f95df62f59b8cabe0 Author: Jan Dakinevich <jan.dakinev...@gmail.com> Date: 2017-09-20 (Wed, 20 Sep 2017) Changed paths: M hw/9pfs/9p.c Log Message: ----------- 9pfs: check the size of transport buffer before marshaling v9fs_do_readdir_with_stat() should check for a maximum buffer size before an attempt to marshal gathered data. Otherwise, buffers assumed as misconfigured and the transport would be broken. The patch brings v9fs_do_readdir_with_stat() in conformity with v9fs_do_readdir() behavior. Signed-off-by: Jan Dakinevich <jan.dakinev...@gmail.com> [groug, regression caused my commit 8d37de41cab1 # 2.10] Signed-off-by: Greg Kurz <gr...@kaod.org> Commit: b62b7ed0fc9c58e373b8946c9bd2e193be98dae6 https://github.com/qemu/qemu/commit/b62b7ed0fc9c58e373b8946c9bd2e193be98dae6 Author: Peter Maydell <peter.mayd...@linaro.org> Date: 2017-09-20 (Wed, 20 Sep 2017) Changed paths: M hw/9pfs/9p.c Log Message: ----------- Merge remote-tracking branch 'remotes/gkurz/tags/for-upstream' into staging These patches fix regressions in 2.10 # gpg: Signature made Wed 20 Sep 2017 07:51:07 BST # gpg: using DSA key 0x02FC3AEB0101DBC2 # gpg: Good signature from "Greg Kurz <gr...@kaod.org>" # gpg: aka "Greg Kurz <gr...@free.fr>" # gpg: aka "Greg Kurz <gk...@linux.vnet.ibm.com>" # gpg: aka "Gregory Kurz (Groug) <gr...@free.fr>" # gpg: aka "[jpeg image of size 3330]" # gpg: WARNING: This key is not certified with a trusted signature! # gpg: There is no indication that the signature belongs to the owner. # Primary key fingerprint: 2BD4 3B44 535E C0A7 9894 DBA2 02FC 3AEB 0101 DBC2 * remotes/gkurz/tags/for-upstream: 9pfs: check the size of transport buffer before marshaling 9pfs: fix name_to_path assertion in v9fs_complete_rename() 9pfs: fix readdir() for 9p2000.u Signed-off-by: Peter Maydell <peter.mayd...@linaro.org> Compare: https://github.com/qemu/qemu/compare/d3f5433c7b4a...b62b7ed0fc9c