tree 509c32c5f71373bcf5741e097e1e9e22a1fce646
parent e07f2ed3f2943f7886e22ba46b570c7c66e5b091
author yonghong-song <ys114321@gmail.com> 1528985502 -0700
committer GitHub <noreply@github.com> 1528985502 -0700
gpgsig -----BEGIN PGP SIGNATURE-----
 
 wsBcBAABCAAQBQJbIneeCRBK7hj4Ov3rIwAAdHIIAFuAWrjqeTHe26gvdyvIXlYT
 WNcZq9/8O0NYaRhNOIFtMa1rxRJyH/v2lKmhLHIk6vLipoVDw08y/0D0eHQpS9fp
 3nFKNhmnsud1QhAPM2hrp5hZR+geRgQ39jKOAnv3Wao01VUcslgL7r0BBhTa+M0Z
 i8cxJUob8dGK4fNEc+VXMQxHc+HXQM1Oav1kbh0fE23oKJ0OMthD4FT56U4oV9Xw
 G3GNPVXaFIYEU3x18q/TAmPyC/kRmwMiACZek/BTy9eK0Nj9IJ4j4/TddLQ0HuxH
 6+XIDYCOlW1BqV4BO5C6l4Iq6aAd9bqi85XE2ART2mYuUT1FuZbbXxlvZSaxiMs=
 =oAWh
 -----END PGP SIGNATURE-----
 

prevent bpf_probe_read MemberExpr rewrite if not rewritable (#1827)

For the test case in this patch below,
 #define _(P) ({typeof(P) val = 0; bpf_probe_read(&val, sizeof(val), &P); val;})
 int count_tcp(struct pt_regs *ctx, struct sk_buff *skb) {
     return _(TCP_SKB_CB(skb)->tcp_gso_size);
 }

The clang AST will consider the whole `_(TCP_SKB_CB(skb)->tcp_gso_size)`
as a MemberExpr during AST traversal. However, it will consider
the start location of the member expression not rewritable.
Without this patch, we will get an error like below:
    /virtual/main.c:15:44: error: expected ';' after return statement
    return _(TCP_SKB_CB(skb)->tcp_gso_size)); _val; });
Basically, the start of bpf_probe_read() rewritingg failed but
later part succeeded, so the code becomes uncompilable.

Previously, we did not see such issues, but as rewriter got
more smarter this bug is exposed.

This patch fixed the issue by preventing rewriting the whole
expression if the start location for the member expression is
not rewritable.

Signed-off-by: Yonghong Song <yhs@fb.com>