diff options
author | Daichi Hirono <hirono@google.com> | 2017-06-20 16:18:32 +0900 |
---|---|---|
committer | Daichi Hirono <hirono@google.com> | 2017-06-23 11:23:12 +0900 |
commit | a6dee5e279de56751238f750d12f8a6237992043 (patch) | |
tree | 7408416a81a391cf55d78b9836e358d9a7047bc3 /libappfuse | |
parent | e37c3df0e8cfff6ef5819053317ff1df2de5e370 (diff) | |
download | core-a6dee5e279de56751238f750d12f8a6237992043.tar.gz |
Add volatile to temporary variable.
FuseBuffer::HandleNotImpl save the value of |request.header.unique| to the
temporary variable, clear the buffer which is a union of |request| and
|response|, then write back the unique value to response.header.unique.
Before the CL, the temporary variable was wrongly removed by the compiler
optimization, and response.header.unique was always 0. The CL adds
volatile modifier as workaround to prevent the compiler optimization
from removing the temporary value.
Bug: 62429763
Test: libappfuse_tests
Change-Id: Ia853f805633f646f316f585a35c7b018000b6eb3
Diffstat (limited to 'libappfuse')
-rw-r--r-- | libappfuse/FuseBuffer.cc | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/libappfuse/FuseBuffer.cc b/libappfuse/FuseBuffer.cc index 1b47e0a35..1eab46cb4 100644 --- a/libappfuse/FuseBuffer.cc +++ b/libappfuse/FuseBuffer.cc @@ -251,7 +251,9 @@ void FuseBuffer::HandleInit() { void FuseBuffer::HandleNotImpl() { LOG(VERBOSE) << "NOTIMPL op=" << request.header.opcode << " uniq=" << request.header.unique << " nid=" << request.header.nodeid; - const uint64_t unique = request.header.unique; + // Add volatile as a workaround for compiler issue which removes the temporary + // variable. + const volatile uint64_t unique = request.header.unique; response.Reset(0, -ENOSYS, unique); } |