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
| ||
|
Date: Thu, 5 May 2016 17:31:49 -0700 From: Brian Norris <computersforpeace@...il.com> To: <linux-mtd@...ts.infradead.org> Cc: Heiner Kallweit <hkallweit1@...il.com>, Brian Norris <computersforpeace@...il.com>, Han Xu <han.xu@....com>, Michal Suchanek <hramrach@...il.com>, Boris Brezillon <boris.brezillon@...e-electrons.com>, Javier Martinez Canillas <javier@....samsung.com>, Rafal Milecki <zajec5@...il.com>, Jagan Teki <jteki@...nedev.com>, "Andrew F. Davis" <afd@...com>, Mika Westerberg <mika.westerberg@...ux.intel.com>, Gabor Juhos <juhosg@...nwrt.org>, Bean Huo <beanhuo@...ron.com>, linux-kernel@...r.kernel.org, Bayi Cheng <bayi.cheng@...iatek.com>, Joachim Eastwood <manabian@...il.com>, Cyrille Pitchen <cyrille.pitchen@...el.com> Subject: [PATCH v7 03/10] mtd: fsl-quadspi: return amount of data read/written or error From: Michal Suchanek <hramrach@...il.com> Return amount of data read/written or error as read(2)/write(2) does. Signed-off-by: Michal Suchanek <hramrach@...il.com> Signed-off-by: Brian Norris <computersforpeace@...il.com> --- v6 -> v7: * moved some *retlen changes to patch 7 to preserve bisectability drivers/mtd/spi-nor/fsl-quadspi.c | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/drivers/mtd/spi-nor/fsl-quadspi.c b/drivers/mtd/spi-nor/fsl-quadspi.c index 74dc155e1b3b..ea296769f015 100644 --- a/drivers/mtd/spi-nor/fsl-quadspi.c +++ b/drivers/mtd/spi-nor/fsl-quadspi.c @@ -618,7 +618,7 @@ static inline void fsl_qspi_invalid(struct fsl_qspi *q) qspi_writel(q, reg, q->iobase + QUADSPI_MCR); } -static int fsl_qspi_nor_write(struct fsl_qspi *q, struct spi_nor *nor, +static ssize_t fsl_qspi_nor_write(struct fsl_qspi *q, struct spi_nor *nor, u8 opcode, unsigned int to, u32 *txbuf, unsigned count, size_t *retlen) { @@ -647,8 +647,11 @@ static int fsl_qspi_nor_write(struct fsl_qspi *q, struct spi_nor *nor, /* Trigger it */ ret = fsl_qspi_runcmd(q, opcode, to, count); - if (ret == 0 && retlen) - *retlen += count; + if (ret == 0) { + if (retlen) + *retlen += count; + return count; + } return ret; } @@ -860,6 +863,8 @@ static int fsl_qspi_write_reg(struct spi_nor *nor, u8 opcode, u8 *buf, int len) } else if (len > 0) { ret = fsl_qspi_nor_write(q, nor, opcode, 0, (u32 *)buf, len, NULL); + if (ret > 0) + return 0; } else { dev_err(q->dev, "invalid cmd %d\n", opcode); ret = -EINVAL; @@ -873,12 +878,12 @@ static ssize_t fsl_qspi_write(struct spi_nor *nor, loff_t to, { struct fsl_qspi *q = nor->priv; - fsl_qspi_nor_write(q, nor, nor->program_opcode, to, + ssize_t ret = fsl_qspi_nor_write(q, nor, nor->program_opcode, to, (u32 *)buf, len, retlen); /* invalid the data in the AHB buffer. */ fsl_qspi_invalid(q); - return 0; + return ret; } static ssize_t fsl_qspi_read(struct spi_nor *nor, loff_t from, @@ -925,7 +930,7 @@ static ssize_t fsl_qspi_read(struct spi_nor *nor, loff_t from, len); *retlen += len; - return 0; + return len; } static int fsl_qspi_erase(struct spi_nor *nor, loff_t offs) -- 2.8.0.rc3.226.g39d4020
Powered by blists - more mailing lists