Thanks, Avri > -----Original Message----- > From: Bart Van Assche > Sent: Wednesday, August 01, 2018 6:36 PM > To: h...@lst.de; Avri Altman ; linux-scsi@vger.kernel.org; > jthumsh...@suse.de; h...@suse.com; martin.peter...@oracle.com; > j...@linux.vnet.ibm.com > Cc: Vinayak Holikatti ; Avi Shchislowski ; Alex Lemberg ; Stanislav Nijnikov ; > subha...@codeaurora.org > Subject: Re: [PATCH 5/6] scsi: ufs-bsg: Add support for raw upiu in > ufs_bsg_request() > > On Wed, 2018-08-01 at 11:04 +0300, Avri Altman wrote: > > + if (qr->opcode != UPIU_QUERY_OPCODE_WRITE_DESC || > > + desc_size <= 0) > > + return -EINVAL; > > Please use the full line length and don't split lines if that is not > necessary. Done.
> > > + ret = ufshcd_map_desc_id_to_length(bsg_host->hba, desc_id, > buff_len); > > + > > + if (ret || !buff_len) > > + return -EINVAL; > > Why is buff_len only tested after it has been passed as an argument to > ufshcd_map_desc_id_to_length()? That seems weird to me. buff_len here is an int * and I'm using it to verify that enough space was allocated in the case it is a "write descriptor" upiu. So I need to fix 2 things: 1) should be if (ret || !(*buff_len)) and not if (ret || !buff_len) 2) don't utilize the buff_len variable for that, which is using to obtain The reply_payload_rcv_len eventually. Use a separate desc_len variable. > > > +static int ufs_bsg_verify_query_size(unsigned int request_len, > > + unsigned int reply_len, > > + int rw, int buff_len) > > +{ > > + int min_req_len = sizeof(struct ufs_bsg_request); > > + int min_rsp_len = sizeof(struct ufs_bsg_reply); > > + > > + if (rw == UFS_BSG_NOP) > > + goto null_buff; > > + > > + if (rw == WRITE) > > + min_req_len += buff_len; > > Can the "goto" statement be avoided by using a switch/case on 'rw'? Yes. Actually if (rw == UFS_BSG_NOP) is not needed at all. > > Thanks, > > Bart.