|
@@ -408,8 +408,8 @@ static inline void blkif_get_x86_32_req(struct blkif_request *dst,
|
|
struct blkif_x86_32_request *src)
|
|
struct blkif_x86_32_request *src)
|
|
{
|
|
{
|
|
int i, n = BLKIF_MAX_SEGMENTS_PER_REQUEST, j;
|
|
int i, n = BLKIF_MAX_SEGMENTS_PER_REQUEST, j;
|
|
- dst->operation = src->operation;
|
|
|
|
- switch (src->operation) {
|
|
|
|
|
|
+ dst->operation = READ_ONCE(src->operation);
|
|
|
|
+ switch (dst->operation) {
|
|
case BLKIF_OP_READ:
|
|
case BLKIF_OP_READ:
|
|
case BLKIF_OP_WRITE:
|
|
case BLKIF_OP_WRITE:
|
|
case BLKIF_OP_WRITE_BARRIER:
|
|
case BLKIF_OP_WRITE_BARRIER:
|
|
@@ -456,8 +456,8 @@ static inline void blkif_get_x86_64_req(struct blkif_request *dst,
|
|
struct blkif_x86_64_request *src)
|
|
struct blkif_x86_64_request *src)
|
|
{
|
|
{
|
|
int i, n = BLKIF_MAX_SEGMENTS_PER_REQUEST, j;
|
|
int i, n = BLKIF_MAX_SEGMENTS_PER_REQUEST, j;
|
|
- dst->operation = src->operation;
|
|
|
|
- switch (src->operation) {
|
|
|
|
|
|
+ dst->operation = READ_ONCE(src->operation);
|
|
|
|
+ switch (dst->operation) {
|
|
case BLKIF_OP_READ:
|
|
case BLKIF_OP_READ:
|
|
case BLKIF_OP_WRITE:
|
|
case BLKIF_OP_WRITE:
|
|
case BLKIF_OP_WRITE_BARRIER:
|
|
case BLKIF_OP_WRITE_BARRIER:
|