* [Qemu-devel] [PATCH] 9pfs: add xattrwalk_fid field in V9fsFidState struct
@ 2016-10-13 2:55 Li Qiang
2016-10-13 8:03 ` Greg Kurz
0 siblings, 1 reply; 2+ messages in thread
From: Li Qiang @ 2016-10-13 2:55 UTC (permalink / raw)
To: groug, qemu-devel; +Cc: Li Qiang
From: Li Qiang <liqiang6-s@360.cn>
Currently, 9pfs sets the fs.xattr.copied_len field in V9fsFidState
to -1 to indicate a xattr walk fid. As the fs.xattr.copied_len is also
used to account for copied bytes, this may cause confusion. This patch
add a bool variable to represent the xattr walk fid.
Signed-off-by: Li Qiang <liqiang6-s@360.cn>
---
hw/9pfs/9p.c | 7 ++++---
hw/9pfs/9p.h | 1 +
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/hw/9pfs/9p.c b/hw/9pfs/9p.c
index 8c7488f..9625296 100644
--- a/hw/9pfs/9p.c
+++ b/hw/9pfs/9p.c
@@ -325,7 +325,7 @@ static int v9fs_xattr_fid_clunk(V9fsPDU *pdu, V9fsFidState *fidp)
{
int retval = 0;
- if (fidp->fs.xattr.copied_len == -1) {
+ if (fidp->xattrwalk_fid) {
/* getxattr/listxattr fid */
goto free_value;
}
@@ -3181,7 +3181,7 @@ static void v9fs_xattrwalk(void *opaque)
*/
xattr_fidp->fs.xattr.len = size;
xattr_fidp->fid_type = P9_FID_XATTR;
- xattr_fidp->fs.xattr.copied_len = -1;
+ xattr_fidp->xattrwalk_fid = true;
if (size) {
xattr_fidp->fs.xattr.value = g_malloc(size);
err = v9fs_co_llistxattr(pdu, &xattr_fidp->path,
@@ -3214,7 +3214,7 @@ static void v9fs_xattrwalk(void *opaque)
*/
xattr_fidp->fs.xattr.len = size;
xattr_fidp->fid_type = P9_FID_XATTR;
- xattr_fidp->fs.xattr.copied_len = -1;
+ xattr_fidp->xattrwalk_fid = true;
if (size) {
xattr_fidp->fs.xattr.value = g_malloc(size);
err = v9fs_co_lgetxattr(pdu, &xattr_fidp->path,
@@ -3269,6 +3269,7 @@ static void v9fs_xattrcreate(void *opaque)
/* Make the file fid point to xattr */
xattr_fidp = file_fidp;
xattr_fidp->fid_type = P9_FID_XATTR;
+ xattr_fidp->xattrwalk_fid = false;
xattr_fidp->fs.xattr.copied_len = 0;
xattr_fidp->fs.xattr.len = size;
xattr_fidp->fs.xattr.flags = flags;
diff --git a/hw/9pfs/9p.h b/hw/9pfs/9p.h
index 22198f6..7e1e70b 100644
--- a/hw/9pfs/9p.h
+++ b/hw/9pfs/9p.h
@@ -214,6 +214,7 @@ struct V9fsFidState
uid_t uid;
int ref;
int clunked;
+ bool xattrwalk_fid;
V9fsFidState *next;
V9fsFidState *rclm_lst;
};
--
1.8.3.1
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [Qemu-devel] [PATCH] 9pfs: add xattrwalk_fid field in V9fsFidState struct
2016-10-13 2:55 [Qemu-devel] [PATCH] 9pfs: add xattrwalk_fid field in V9fsFidState struct Li Qiang
@ 2016-10-13 8:03 ` Greg Kurz
0 siblings, 0 replies; 2+ messages in thread
From: Greg Kurz @ 2016-10-13 8:03 UTC (permalink / raw)
To: Li Qiang; +Cc: qemu-devel, Li Qiang
On Wed, 12 Oct 2016 19:55:42 -0700
Li Qiang <liq3ea@gmail.com> wrote:
> From: Li Qiang <liqiang6-s@360.cn>
>
> Currently, 9pfs sets the fs.xattr.copied_len field in V9fsFidState
> to -1 to indicate a xattr walk fid. As the fs.xattr.copied_len is also
> used to account for copied bytes, this may cause confusion. This patch
> add a bool variable to represent the xattr walk fid.
>
> Signed-off-by: Li Qiang <liqiang6-s@360.cn>
> ---
Please send a patchset instead of individual patches... it makes reviewing
difficult.
For example, this patch and the "9pfs: fix integer overflow issue in xattr
read/write" one are about fixing how xattr.copied_len and xattr.len are
being used. They definitely should be sent together.
I suggest you send a new patchset with a cover letter and 3 patches:
- the cover letter and the patches should be tagged v3, since this will be
your third post on the same topic
- the cover letter should describe the overall problem: wrong types, unsafe
computations, copied_len used both to account bytes and to tag the xattr
fid.
- patch 1/3: this patch, with changes since the previous version below the ---
- patch 2/3: conversion of copied_len/len to uint64_t
- patch 3/3: "9pfs: fix integer overflow...", with changes since the previous
version below the ---
> hw/9pfs/9p.c | 7 ++++---
> hw/9pfs/9p.h | 1 +
> 2 files changed, 5 insertions(+), 3 deletions(-)
>
> diff --git a/hw/9pfs/9p.c b/hw/9pfs/9p.c
> index 8c7488f..9625296 100644
> --- a/hw/9pfs/9p.c
> +++ b/hw/9pfs/9p.c
> @@ -325,7 +325,7 @@ static int v9fs_xattr_fid_clunk(V9fsPDU *pdu, V9fsFidState *fidp)
> {
> int retval = 0;
>
> - if (fidp->fs.xattr.copied_len == -1) {
> + if (fidp->xattrwalk_fid) {
> /* getxattr/listxattr fid */
> goto free_value;
> }
> @@ -3181,7 +3181,7 @@ static void v9fs_xattrwalk(void *opaque)
> */
> xattr_fidp->fs.xattr.len = size;
> xattr_fidp->fid_type = P9_FID_XATTR;
> - xattr_fidp->fs.xattr.copied_len = -1;
> + xattr_fidp->xattrwalk_fid = true;
> if (size) {
> xattr_fidp->fs.xattr.value = g_malloc(size);
> err = v9fs_co_llistxattr(pdu, &xattr_fidp->path,
> @@ -3214,7 +3214,7 @@ static void v9fs_xattrwalk(void *opaque)
> */
> xattr_fidp->fs.xattr.len = size;
> xattr_fidp->fid_type = P9_FID_XATTR;
> - xattr_fidp->fs.xattr.copied_len = -1;
> + xattr_fidp->xattrwalk_fid = true;
> if (size) {
> xattr_fidp->fs.xattr.value = g_malloc(size);
> err = v9fs_co_lgetxattr(pdu, &xattr_fidp->path,
> @@ -3269,6 +3269,7 @@ static void v9fs_xattrcreate(void *opaque)
> /* Make the file fid point to xattr */
> xattr_fidp = file_fidp;
> xattr_fidp->fid_type = P9_FID_XATTR;
> + xattr_fidp->xattrwalk_fid = false;
> xattr_fidp->fs.xattr.copied_len = 0;
> xattr_fidp->fs.xattr.len = size;
> xattr_fidp->fs.xattr.flags = flags;
> diff --git a/hw/9pfs/9p.h b/hw/9pfs/9p.h
> index 22198f6..7e1e70b 100644
> --- a/hw/9pfs/9p.h
> +++ b/hw/9pfs/9p.h
> @@ -214,6 +214,7 @@ struct V9fsFidState
> uid_t uid;
> int ref;
> int clunked;
> + bool xattrwalk_fid;
This belongs to the V9fsXattr type.
> V9fsFidState *next;
> V9fsFidState *rclm_lst;
> };
Cheers.
--
Greg
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2016-10-13 8:03 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-10-13 2:55 [Qemu-devel] [PATCH] 9pfs: add xattrwalk_fid field in V9fsFidState struct Li Qiang
2016-10-13 8:03 ` Greg Kurz
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).