* [PATCH] trace-cmd: Change tracecmd_msg's buf member type to char *
@ 2019-03-22 15:01 Slavomir Kaslev
2019-03-22 15:25 ` Steven Rostedt
0 siblings, 1 reply; 5+ messages in thread
From: Slavomir Kaslev @ 2019-03-22 15:01 UTC (permalink / raw)
To: rostedt; +Cc: linux-trace-devel, slavomir.kaslev
Now that the buffer for protocol V3 messages is always text, it makes sense to
have it declared as such and drop a few casts.
Signed-off-by: Slavomir Kaslev <kaslevs@vmware.com>
---
tracecmd/trace-msg.c | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/tracecmd/trace-msg.c b/tracecmd/trace-msg.c
index a91b211..9a27141 100644
--- a/tracecmd/trace-msg.c
+++ b/tracecmd/trace-msg.c
@@ -104,7 +104,7 @@ struct tracecmd_msg {
struct tracecmd_msg_tinit tinit;
struct tracecmd_msg_rinit rinit;
};
- void *buf;
+ char *buf;
} __attribute__((packed));
static int msg_buf_len(struct tracecmd_msg *msg)
@@ -436,7 +436,7 @@ int tracecmd_msg_send_init_data(struct tracecmd_msg_handle *msg_handle,
goto error;
}
- if (((char *)msg.buf)[buf_len-1] != '\0') {
+ if (msg.buf[buf_len-1] != '\0') {
ret = -EINVAL;
goto error;
}
@@ -448,7 +448,7 @@ int tracecmd_msg_send_init_data(struct tracecmd_msg_handle *msg_handle,
goto out;
}
- buf_end = (char *)msg.buf + buf_len;
+ buf_end = msg.buf + buf_len;
for (i = 0, p = msg.buf; i < cpus; i++, p++) {
if (p >= buf_end) {
free(ports);
@@ -555,12 +555,12 @@ int tracecmd_msg_initial_setting(struct tracecmd_msg_handle *msg_handle)
if (buf_len == 0)
goto no_options;
- if (((char *)msg.buf)[buf_len-1] != '\0') {
+ if (msg.buf[buf_len-1] != '\0') {
ret = -EINVAL;
goto error;
}
- buf_end = (char *)msg.buf + buf_len;
+ buf_end = msg.buf + buf_len;
options = ntohl(msg.tinit.opt_num);
for (i = 0, p = msg.buf; i < options; i++, p++) {
if (p >= buf_end) {
--
2.19.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH] trace-cmd: Change tracecmd_msg's buf member type to char *
2019-03-22 15:01 [PATCH] trace-cmd: Change tracecmd_msg's buf member type to char * Slavomir Kaslev
@ 2019-03-22 15:25 ` Steven Rostedt
2019-03-22 15:39 ` Slavomir Kaslev
0 siblings, 1 reply; 5+ messages in thread
From: Steven Rostedt @ 2019-03-22 15:25 UTC (permalink / raw)
To: Slavomir Kaslev; +Cc: linux-trace-devel, slavomir.kaslev
On Fri, 22 Mar 2019 17:01:05 +0200
Slavomir Kaslev <kaslevs@vmware.com> wrote:
> Now that the buffer for protocol V3 messages is always text, it makes sense to
> have it declared as such and drop a few casts.
Is it always text?
When debugging the listener I saw the meta data sent as non text.
tracecmd_msg_data_send()
Sends the data in binary, not text. Which is what we want.
-- Steve
>
> Signed-off-by: Slavomir Kaslev <kaslevs@vmware.com>
> ---
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] trace-cmd: Change tracecmd_msg's buf member type to char *
2019-03-22 15:25 ` Steven Rostedt
@ 2019-03-22 15:39 ` Slavomir Kaslev
2019-03-22 16:14 ` Steven Rostedt
0 siblings, 1 reply; 5+ messages in thread
From: Slavomir Kaslev @ 2019-03-22 15:39 UTC (permalink / raw)
To: Steven Rostedt; +Cc: linux-trace-devel
On Fri, Mar 22, 2019 at 5:25 PM Steven Rostedt <rostedt@goodmis.org> wrote:
>
> On Fri, 22 Mar 2019 17:01:05 +0200
> Slavomir Kaslev <kaslevs@vmware.com> wrote:
>
> > Now that the buffer for protocol V3 messages is always text, it makes sense to
> > have it declared as such and drop a few casts.
>
> Is it always text?
>
> When debugging the listener I saw the meta data sent as non text.
>
> tracecmd_msg_data_send()
>
> Sends the data in binary, not text. Which is what we want.
You're completely right. I still think that it makes sense to have
that patch go in, maybe with rewritten commit message.
In tracecmd_msg_read_data()[1] we do pointer arithmetic on void
pointer which is undefined behavior (though gcc allows it unless
-pedantic-errors is passed) and this patch will take care of it.
Should I resend or drop it?
[1] https://git.kernel.org/pub/scm/linux/kernel/git/rostedt/trace-cmd.git/tree/tracecmd/trace-msg.c#n665
-- Slavi
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] trace-cmd: Change tracecmd_msg's buf member type to char *
2019-03-22 15:39 ` Slavomir Kaslev
@ 2019-03-22 16:14 ` Steven Rostedt
0 siblings, 0 replies; 5+ messages in thread
From: Steven Rostedt @ 2019-03-22 16:14 UTC (permalink / raw)
To: Slavomir Kaslev; +Cc: linux-trace-devel
On Fri, 22 Mar 2019 15:39:11 +0000
Slavomir Kaslev <kaslevs@vmware.com> wrote:
> You're completely right. I still think that it makes sense to have
> that patch go in, maybe with rewritten commit message.
> In tracecmd_msg_read_data()[1] we do pointer arithmetic on void
> pointer which is undefined behavior (though gcc allows it unless
> -pedantic-errors is passed) and this patch will take care of it.
>
> Should I resend or drop it?
I think the patch cleans up the code (removes a lot of the type
casting). Resend it with a new change log.
-- Steve
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH] trace-cmd: Change tracecmd_msg's buf member type to char *
@ 2019-03-22 16:26 Slavomir Kaslev
0 siblings, 0 replies; 5+ messages in thread
From: Slavomir Kaslev @ 2019-03-22 16:26 UTC (permalink / raw)
To: rostedt; +Cc: linux-trace-devel, slavomir.kaslev
Now that all protocol V3 messages (besides SEND_DATA) use the buffer for text,
it makes sense to have it declared as such and drop a few casts.
This also takes care of undefined behavior caused by void pointer arithmetic in
tracecmd_msg_data_send()/tracecmd_msg_read_data().
Signed-off-by: Slavomir Kaslev <kaslevs@vmware.com>
---
tracecmd/trace-msg.c | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/tracecmd/trace-msg.c b/tracecmd/trace-msg.c
index a91b211..9a27141 100644
--- a/tracecmd/trace-msg.c
+++ b/tracecmd/trace-msg.c
@@ -104,7 +104,7 @@ struct tracecmd_msg {
struct tracecmd_msg_tinit tinit;
struct tracecmd_msg_rinit rinit;
};
- void *buf;
+ char *buf;
} __attribute__((packed));
static int msg_buf_len(struct tracecmd_msg *msg)
@@ -436,7 +436,7 @@ int tracecmd_msg_send_init_data(struct tracecmd_msg_handle *msg_handle,
goto error;
}
- if (((char *)msg.buf)[buf_len-1] != '\0') {
+ if (msg.buf[buf_len-1] != '\0') {
ret = -EINVAL;
goto error;
}
@@ -448,7 +448,7 @@ int tracecmd_msg_send_init_data(struct tracecmd_msg_handle *msg_handle,
goto out;
}
- buf_end = (char *)msg.buf + buf_len;
+ buf_end = msg.buf + buf_len;
for (i = 0, p = msg.buf; i < cpus; i++, p++) {
if (p >= buf_end) {
free(ports);
@@ -555,12 +555,12 @@ int tracecmd_msg_initial_setting(struct tracecmd_msg_handle *msg_handle)
if (buf_len == 0)
goto no_options;
- if (((char *)msg.buf)[buf_len-1] != '\0') {
+ if (msg.buf[buf_len-1] != '\0') {
ret = -EINVAL;
goto error;
}
- buf_end = (char *)msg.buf + buf_len;
+ buf_end = msg.buf + buf_len;
options = ntohl(msg.tinit.opt_num);
for (i = 0, p = msg.buf; i < options; i++, p++) {
if (p >= buf_end) {
--
2.19.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
end of thread, other threads:[~2019-03-22 16:26 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-03-22 15:01 [PATCH] trace-cmd: Change tracecmd_msg's buf member type to char * Slavomir Kaslev
2019-03-22 15:25 ` Steven Rostedt
2019-03-22 15:39 ` Slavomir Kaslev
2019-03-22 16:14 ` Steven Rostedt
2019-03-22 16:26 Slavomir Kaslev
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.