Hi Morimoto-san,

Thank you for the patch.

On Thursday 14 November 2013 02:23:23 Kuninori Morimoto wrote:
> From: Shinobu Uehara <[email protected]>
> 
> Current sd_ctrl_read/write16_rep() doesn't care odd size
> 
> Signed-off-by: Shinobu Uehara <[email protected]>
> Signed-off-by: Ryo Kataoka <[email protected]>
> Signed-off-by: Kuninori Morimoto <[email protected]>
> ---
>  drivers/mmc/host/tmio_mmc_pio.c |    6 ++++--
>  1 file changed, 4 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/mmc/host/tmio_mmc_pio.c
> b/drivers/mmc/host/tmio_mmc_pio.c index b380225..05ae15c 100644
> --- a/drivers/mmc/host/tmio_mmc_pio.c
> +++ b/drivers/mmc/host/tmio_mmc_pio.c
> @@ -386,9 +386,11 @@ static void tmio_mmc_pio_irq(struct tmio_mmc_host
> *host)
> 
>       /* Transfer the data */
>       if (data->flags & MMC_DATA_READ)
> -             sd_ctrl_read16_rep(host, CTL_SD_DATA_PORT, buf, count >> 1);
> +             sd_ctrl_read16_rep(host,
> +                     CTL_SD_DATA_PORT, buf, (count + 1) >> 1);
>       else
> -             sd_ctrl_write16_rep(host, CTL_SD_DATA_PORT, buf, count >> 1);
> +             sd_ctrl_write16_rep(host,
> +                     CTL_SD_DATA_PORT, buf, (count + 1) >> 1);

This means that the hardware will transfer one more byte than the requested 
value. Have you verified that the buffer will always have room for that extra 
byte (when reading from the hardware), and that the extra byte will not have 
any side effect (when writing to the hardware) ? I'm also a bit surprised, do 
upper layers transfer data to/from the card using odd number of bytes ?

>       host->sg_off += count;
-- 
Regards,

Laurent Pinchart

--
To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to