[PATCH 7/8] mtd: rawnand: qcom: Early structure initialization

Tudor Ambarus tudor.ambarus at linaro.org
Thu Jul 27 19:23:52 PDT 2023



On 7/16/23 15:46, Miquel Raynal wrote:
> Instead of allocating a structure on the stack with random data and then
> expect the callee to perform the initialization (which is, in general,
> error prone), prefer zeroing the structure explicitly at allocation and
> provide the already zeroed area, so no explicit memset operation is
> needed. It is probably safer to do so, so we limit the timeframe when
> dirty data could actually be accessed by mistake.
> 
> Signed-off-by: Miquel Raynal <miquel.raynal at bootlin.com>

Reviewed-by: Tudor Ambarus <tudor.ambarus at linaro.org>

> ---
>  drivers/mtd/nand/raw/qcom_nandc.c | 12 +++++-------
>  1 file changed, 5 insertions(+), 7 deletions(-)
> 
> diff --git a/drivers/mtd/nand/raw/qcom_nandc.c b/drivers/mtd/nand/raw/qcom_nandc.c
> index cb6ccaa19224..4fc8dafa8f03 100644
> --- a/drivers/mtd/nand/raw/qcom_nandc.c
> +++ b/drivers/mtd/nand/raw/qcom_nandc.c
> @@ -2600,8 +2600,6 @@ static void qcom_parse_instructions(struct nand_chip *chip,
>  	unsigned int op_id;
>  	int i;
>  
> -	memset(q_op, 0, sizeof(*q_op));
> -
>  	for (op_id = 0; op_id < subop->ninstrs; op_id++) {
>  		unsigned int offset, naddrs;
>  		const u8 *addrs;
> @@ -2681,7 +2679,7 @@ static int qcom_read_status_exec(struct nand_chip *chip,
>  	struct qcom_nand_host *host = to_qcom_nand_host(chip);
>  	struct qcom_nand_controller *nandc = get_qcom_nand_controller(chip);
>  	struct nand_ecc_ctrl *ecc = &chip->ecc;
> -	struct qcom_op q_op;
> +	struct qcom_op q_op = {};
>  	const struct nand_op_instr *instr = NULL;
>  	unsigned int op_id = 0;
>  	unsigned int len = 0;
> @@ -2744,7 +2742,7 @@ static int qcom_read_id_type_exec(struct nand_chip *chip, const struct nand_subo
>  {
>  	struct qcom_nand_controller *nandc = get_qcom_nand_controller(chip);
>  	struct qcom_nand_host *host = to_qcom_nand_host(chip);
> -	struct qcom_op q_op;
> +	struct qcom_op q_op = {};
>  	const struct nand_op_instr *instr = NULL;
>  	unsigned int op_id = 0;
>  	unsigned int len = 0;
> @@ -2795,7 +2793,7 @@ static int qcom_misc_cmd_type_exec(struct nand_chip *chip, const struct nand_sub
>  {
>  	struct qcom_nand_controller *nandc = get_qcom_nand_controller(chip);
>  	struct qcom_nand_host *host = to_qcom_nand_host(chip);
> -	struct qcom_op q_op;
> +	struct qcom_op q_op = {};
>  	int ret = 0;
>  
>  	qcom_parse_instructions(chip, subop, &q_op);
> @@ -2838,7 +2836,7 @@ static int qcom_param_page_type_exec(struct nand_chip *chip,  const struct nand_
>  {
>  	struct qcom_nand_host *host = to_qcom_nand_host(chip);
>  	struct qcom_nand_controller *nandc = get_qcom_nand_controller(chip);
> -	struct qcom_op q_op;
> +	struct qcom_op q_op = {};
>  	const struct nand_op_instr *instr = NULL;
>  	unsigned int op_id = 0;
>  	unsigned int len = 0;
> @@ -2935,7 +2933,7 @@ static int qcom_erase_cmd_type_exec(struct nand_chip *chip, const struct nand_su
>  {
>  	struct qcom_nand_host *host = to_qcom_nand_host(chip);
>  	struct qcom_nand_controller *nandc = get_qcom_nand_controller(chip);
> -	struct qcom_op q_op;
> +	struct qcom_op q_op = {};
>  	int ret = 0;
>  
>  	qcom_parse_instructions(chip, subop, &q_op);



More information about the linux-arm-kernel mailing list