> > > + case UPIU_TRANSACTION_QUERY_REQ: > > + qr = &bsg_request->upiu_req.qr; > > + if (qr->opcode == UPIU_QUERY_OPCODE_READ_DESC) > > + goto not_supported; > > + > > + if (ufs_bsg_get_query_desc_size(hba, qr, &desc_len)) > > + goto null_desc_buff; > > + > > + if (qr->opcode == UPIU_QUERY_OPCODE_WRITE_DESC) { > > + rw = WRITE; > > + desc_buff = (uint8_t *)(bsg_request + 1); > > + } > > + > > +null_desc_buff: > > + /* fall through */ > > + case UPIU_TRANSACTION_NOP_OUT: > > + case UPIU_TRANSACTION_TASK_REQ: > > + /* Now that we know if its a read or write, verify again */ > > + if (rw != UFS_BSG_NOP || desc_len) { > > + ret = ufs_bsg_verify_query_size(request_len, > reply_len, > > + rw, desc_len); > > + if (ret) { > > + dev_err(job->dev, > > + "not enough space assigned\n"); > > + goto out; > > + } > > + } > > I think this check should be moved into the above switch case > as it can only be hit for UPIU_TRANSACTION_QUERY_REQ requests. In > fact I think the code would be a lot cleaner if you could factor > the UPIU_TRANSACTION_QUERY_REQ case into a little helper function > (ufs_bsg_get_query_desc_size should probably be merged into that > helper also). Done. > > > + case UPIU_TRANSACTION_UIC_CMD: This should introduced only in the next patch > > + /* later */ > > + case UPIU_TRANSACTION_COMMAND: > > + case UPIU_TRANSACTION_DATA_OUT: > > +not_supported: > > + /* for the time being, we do not support data transfer upiu */ > > + ret = -ENOTSUPP; > > + dev_err(job->dev, "unsupported msgcode 0x%x\n", msgcode); > > + > > + break; > > + default: > > + ret = -EINVAL; > > + > > + break; > > + } > > This difference between known but not supported and not recognized is > a bit odd. I think there should be just the generic not supported > case, and you can decide if you want to log it or not. Done. > > Also please try to avoid goto labels jumping into switch statements, > code is generlaly a lot more readable if you keep the goto targets > outside the switch statement. Done. Thanks, Avri