<div dir="auto">I've heard about a way to test one's own code before sending duplicate patches: git send-email to your own mailbox and then try to apply the patch to see if it is ok. Do you think I should do that every time? Is it done by using mutt? Anyway, it seems a careful and experienced man will not send useless patches like me.</div><br><div class="gmail_quote"><div dir="ltr">On Thu, May 3, 2018, 07:57 Zhibin Li <<a href="mailto:08826794brmt@gmail.com">08826794brmt@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="auto">Oh, please accept my apology, I was trying to print out the address to understand what (void *)fo+1 without uintptr_t is really doing but I was a little sleepy last night and I forgot to remove the stupid code. I have say you are so patience and I'm really sorry.</div><br><div class="gmail_quote"><div dir="ltr">On Thu, May 3, 2018, 07:05 Dmitry V. Levin <<a href="mailto:ldv@altlinux.org" target="_blank" rel="noreferrer">ldv@altlinux.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On Wed, May 02, 2018 at 11:16:57PM +0800, Zhibin Li wrote:<br>
> *tests/fcntl.c (test_f_owner_ex_type_pid,<br>
<br>
There has to be a space between * and the file name.<br>
<br>
> test_f_owner_ex_umove_or_printaddr, test_f_owner_ex): New functions.<br>
> (main): Use test_f_owner_ex.<br>
> ---<br>
>  tests/fcntl.c | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++<br>
>  1 file changed, 53 insertions(+)<br>
> <br>
> diff --git a/tests/fcntl.c b/tests/fcntl.c<br>
> index 4f62ca2a..504464e0 100644<br>
> --- a/tests/fcntl.c<br>
> +++ b/tests/fcntl.c<br>
> @@ -69,12 +69,65 @@ test_flock64(void)<br>
>  #endif<br>
>  }<br>
>  <br>
> +static long<br>
> +test_f_owner_ex_type_pid(const int cmd, const char *const cmd_name,<br>
> +                      const int type, const char *const type_name,<br>
> +                      pid_t pid)<br>
> +{<br>
> +     TAIL_ALLOC_OBJECT_CONST_PTR(struct f_owner_ex, fo);<br>
> +<br>
> +     fo->type = type;<br>
> +     fo->pid = pid;<br>
> +     long rc = invoke_test_syscall(cmd, fo);<br>
> +     printf("%s(0, %s, {type=%s, pid=%d}) = %s\n",<br>
> +            TEST_SYSCALL_STR, cmd_name, type_name, fo->pid, sprintrc(rc));<br>
> +<br>
> +     void *bad_addr = (void *)fo + 1;<br>
> +     long rc_efault = invoke_test_syscall(cmd, bad_addr);<br>
> +     printf("%s(0, %s, %p) = %s\n",<br>
> +            TEST_SYSCALL_STR, cmd_name, bad_addr, sprintrc(rc_efault));<br>
> +     printf("%p\n", fo);<br>
<br>
Sorry, but have you tested this code?<br>
The last printf seems to be out of place here.<br>
<br>
<br>
-- <br>
ldv<br>
</blockquote></div></blockquote></div>