unsigned int resp_buf_size;
        int mid_state;  /* wish this were enum but can not pass to wait_event */
        int mid_rc;             /* rc for MID_RC */
-       unsigned int mid_flags;
        __le16 command;         /* smb command code */
        unsigned int optype;    /* operation type */
+       bool wait_cancelled:1;  /* Cancelled while waiting for response */
+       bool deleted_from_q:1;  /* Whether Mid has been dequeued frem pending_mid_q */
        bool large_buf:1;       /* if valid response, is pointer to large buf */
        bool multiRsp:1;        /* multiple trans2 responses for one request  */
        bool multiEnd:1;        /* both received */
 #define   MID_RESPONSE_READY 0x40 /* ready for other process handle the rsp */
 #define   MID_RC             0x80 /* mid_rc contains custom rc */
 
-/* Flags */
-#define   MID_WAIT_CANCELLED    1 /* Cancelled while waiting for response */
-#define   MID_DELETED            2 /* Mid has been dequeued/deleted */
-
 /* Types of response buffer returned from SendReceive2 */
 #define   CIFS_NO_BUFFER        0    /* Response buffer not returned */
 #define   CIFS_SMALL_BUFFER     1
  *                             GlobalTotalActiveXid
  * TCP_Server_Info->srv_lock   (anything in struct not protected by another lock and can change)
  * TCP_Server_Info->mid_queue_lock     TCP_Server_Info->pending_mid_q  cifs_get_tcp_session
- *                             (any changes in mid_q_entry fields)
+ *                             mid_q_entry->deleted_from_q
  * TCP_Server_Info->mid_counter_lock    TCP_Server_Info->current_mid    cifs_get_tcp_session
  * TCP_Server_Info->req_lock   TCP_Server_Info->in_flight      cifs_get_tcp_session
  *                             ->credits
 
                if (mid->mid_state == MID_REQUEST_SUBMITTED)
                        mid->mid_state = MID_RETRY_NEEDED;
                list_move(&mid->qhead, &retry_list);
-               mid->mid_flags |= MID_DELETED;
+               mid->deleted_from_q = true;
        }
        spin_unlock(&server->mid_queue_lock);
        cifs_server_unlock(server);
                        list_for_each_entry_safe(mid, nmid, &server->pending_mid_q, qhead) {
                                kref_get(&mid->refcount);
                                list_move(&mid->qhead, &dispose_list);
-                               mid->mid_flags |= MID_DELETED;
+                               mid->deleted_from_q = true;
                        }
                        spin_unlock(&server->mid_queue_lock);
 
         * Trying to handle/dequeue a mid after the send_recv()
         * function has finished processing it is a bug.
         */
-       if (mid->mid_flags & MID_DELETED) {
+       if (mid->deleted_from_q == true) {
                spin_unlock(&mid->server->mid_queue_lock);
                pr_warn_once("trying to dequeue a deleted mid\n");
        } else {
                list_del_init(&mid->qhead);
-               mid->mid_flags |= MID_DELETED;
+               mid->deleted_from_q = true;
                spin_unlock(&mid->server->mid_queue_lock);
        }
 }
                        kref_get(&mid_entry->refcount);
                        mid_entry->mid_state = MID_SHUTDOWN;
                        list_move(&mid_entry->qhead, &dispose_list);
-                       mid_entry->mid_flags |= MID_DELETED;
+                       mid_entry->deleted_from_q = true;
                }
                spin_unlock(&server->mid_queue_lock);
 
 
                        kref_get(&mid->refcount);
                        if (dequeue) {
                                list_del_init(&mid->qhead);
-                               mid->mid_flags |= MID_DELETED;
+                               mid->deleted_from_q = true;
                        }
                        spin_unlock(&server->mid_queue_lock);
                        return mid;
                        } else {
                                spin_lock(&dw->server->mid_queue_lock);
                                mid->mid_state = MID_REQUEST_SUBMITTED;
-                               mid->mid_flags &= ~(MID_DELETED);
+                               mid->deleted_from_q = false;
                                list_add_tail(&mid->qhead,
                                        &dw->server->pending_mid_q);
                                spin_unlock(&dw->server->mid_queue_lock);
 
 #endif
        struct TCP_Server_Info *server = midEntry->server;
 
-       if (midEntry->resp_buf && (midEntry->mid_flags & MID_WAIT_CANCELLED) &&
+       if (midEntry->resp_buf && (midEntry->wait_cancelled) &&
            (midEntry->mid_state == MID_RESPONSE_RECEIVED ||
             midEntry->mid_state == MID_RESPONSE_READY) &&
            server->ops->handle_cancelled_mid)
 delete_mid(struct mid_q_entry *mid)
 {
        spin_lock(&mid->server->mid_queue_lock);
-       if (!(mid->mid_flags & MID_DELETED)) {
+       if (mid->deleted_from_q == false) {
                list_del_init(&mid->qhead);
-               mid->mid_flags |= MID_DELETED;
+               mid->deleted_from_q = true;
        }
        spin_unlock(&mid->server->mid_queue_lock);
 
                rc = mid->mid_rc;
                break;
        default:
-               if (!(mid->mid_flags & MID_DELETED)) {
+               if (mid->deleted_from_q == false) {
                        list_del_init(&mid->qhead);
-                       mid->mid_flags |= MID_DELETED;
+                       mid->deleted_from_q = true;
                }
                spin_unlock(&server->mid_queue_lock);
                cifs_server_dbg(VFS, "%s: invalid mid state mid=%llu state=%d\n",
                                 midQ[i]->mid, le16_to_cpu(midQ[i]->command));
                        send_cancel(server, &rqst[i], midQ[i]);
                        spin_lock(&server->mid_queue_lock);
-                       midQ[i]->mid_flags |= MID_WAIT_CANCELLED;
+                       midQ[i]->wait_cancelled = true;
                        if (midQ[i]->mid_state == MID_REQUEST_SUBMITTED ||
                            midQ[i]->mid_state == MID_RESPONSE_RECEIVED) {
                                midQ[i]->callback = cifs_cancelled_callback;