pvcalls-front: 64-bit align flags
We are using test_and_* operations on the status and flag fields of struct sock_mapping. However, these functions require the operand to be 64-bit aligned on arm64. Currently, only status is 64-bit aligned. Make status and flags explicitly 64-bit aligned. Signed-off-by: Stefano Stabellini <stefano@aporeto.com> Reviewed-by: Boris Ostrovsky <boris.ostrovsky@oracle.com> Signed-off-by: Juergen Gross <jgross@suse.com>
This commit is contained in:
parent
47b02f4c62
commit
d811bcee1f
1 changed files with 8 additions and 3 deletions
|
@ -73,20 +73,25 @@ struct sock_mapping {
|
|||
wait_queue_head_t inflight_conn_req;
|
||||
} active;
|
||||
struct {
|
||||
/* Socket status */
|
||||
/*
|
||||
* Socket status, needs to be 64-bit aligned due to the
|
||||
* test_and_* functions which have this requirement on arm64.
|
||||
*/
|
||||
#define PVCALLS_STATUS_UNINITALIZED 0
|
||||
#define PVCALLS_STATUS_BIND 1
|
||||
#define PVCALLS_STATUS_LISTEN 2
|
||||
uint8_t status;
|
||||
uint8_t status __attribute__((aligned(8)));
|
||||
/*
|
||||
* Internal state-machine flags.
|
||||
* Only one accept operation can be inflight for a socket.
|
||||
* Only one poll operation can be inflight for a given socket.
|
||||
* flags needs to be 64-bit aligned due to the test_and_*
|
||||
* functions which have this requirement on arm64.
|
||||
*/
|
||||
#define PVCALLS_FLAG_ACCEPT_INFLIGHT 0
|
||||
#define PVCALLS_FLAG_POLL_INFLIGHT 1
|
||||
#define PVCALLS_FLAG_POLL_RET 2
|
||||
uint8_t flags;
|
||||
uint8_t flags __attribute__((aligned(8)));
|
||||
uint32_t inflight_req_id;
|
||||
struct sock_mapping *accept_map;
|
||||
wait_queue_head_t inflight_accept_req;
|
||||
|
|
Loading…
Reference in a new issue