lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Message-ID: <202209232240.747B2B5FCC@keescook> Date: Fri, 23 Sep 2022 23:01:46 -0700 From: Kees Cook <keescook@...omium.org> To: "Gustavo A. R. Silva" <gustavoars@...nel.org> Cc: HighPoint Linux Team <linux@...hpoint-tech.com>, "James E.J. Bottomley" <jejb@...ux.ibm.com>, "Martin K. Petersen" <martin.petersen@...cle.com>, linux-scsi@...r.kernel.org, linux-kernel@...r.kernel.org, linux-hardening@...r.kernel.org Subject: Re: [PATCH 1/2][next] scsi: hptiop: Replace one-element array with flexible-array member On Thu, Sep 22, 2022 at 11:53:23AM -0500, Gustavo A. R. Silva wrote: > One-element arrays are deprecated, and we are replacing them with flexible > array members instead. So, replace one-element array with flexible-array > member in struct hpt_iop_request_scsi_command and refactor the rest of the > code, accordingly. > > The following pieces of code suggest that the one element of array sg_list > in struct hpt_iop_request_scsi_command is not taken into account when > calculating the total size for both struct hpt_iop_request_scsi_command > and the maximum number of elements sg_list will contain: > > 1047 req->header.size = cpu_to_le32( > 1048 sizeof(struct hpt_iop_request_scsi_command) > 1049 - sizeof(struct hpt_iopsg) > 1050 + sg_count * sizeof(struct hpt_iopsg)); > > 1400 req_size = sizeof(struct hpt_iop_request_scsi_command) 1401 + sizeof(struct hpt_iopsg) * (hba->max_sg_descriptors - 1); Accidentally merge line above ("1401" should start a new line). > So it's safe to replace the one-element array with a flexible-array > member and update the code above, accordingly: now we don't need to > subtract sizeof(struct hpt_iopsg) from sizeof(struct hpt_iop_request_scsi_command) > because this is implicitly done by the flex-array transformation. The only binary output change I see is from the line numbers changing from the patch, as the argument to __might_sleep() is adjusted: ... │ call d1 <hptiop_reset+0x74> │ R_X86_64_PLT32 __x86_indirect_thunk_rax-0x4 │ - mov $0x434,%esi │ + mov $0x433,%esi │ mov $0x0,%rdi │ R_X86_64_32S .rodata.str1.1 │ call e2 <hptiop_reset+0x85> │ R_X86_64_PLT32 __might_sleep-0x4 ... So this looks good! Reviewed-by: Kees Cook <keescook@...omium.org> -- Kees Cook
Powered by blists - more mailing lists