]> git.baikalelectronics.ru Git - kernel.git/commit
mmc: cast unsigned int to typeof(sector_t) to avoid unexpected error
authorKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Mon, 11 May 2015 07:35:28 +0000 (07:35 +0000)
committerUlf Hansson <ulf.hansson@linaro.org>
Mon, 1 Jun 2015 07:07:03 +0000 (09:07 +0200)
commit1959874e2a94e5ae0433f2a84704f03e78c4be52
tree9e46d09d423c3baf587d0de1a403b3e933e53178
parent7ac448f6b4218316d08f5cb4eb2a4be9714ab388
mmc: cast unsigned int to typeof(sector_t) to avoid unexpected error

card->csd.capacity is defined as "unsigned int", and sector_t is defined as
"u64" or "unsigned long" (depends on CONFIG_LBDAF). Thus, sector_t data
might have strange data (see below). This patch cast it to typeof(sector_t)
Special thanks to coverity <http://www.coverity.com>

ex) if sector_t was u64

        unsigned int data;
        sector_t sector;

        data = 0x800000;
        sector = (data << 8); // 0xffffffff80000000
        sector = (((typeof(sector_t))data) << 8); // 0x80000000

or

        data = 0x80000000;
        sector = (data << 8); // 0x0
        sector = (((typeof(sector_t))data) << 8); // 0x8000000000

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
drivers/mmc/card/block.c