Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
        BUG_ON(!card);
        BUG_ON(fn > 7);
 
+       /* sanity check */
+       if (addr & ~0x1FFFF)
+               return -EINVAL;
+
        memset(&cmd, 0, sizeof(struct mmc_command));
 
        cmd.opcode = SD_IO_RW_DIRECT;
        WARN_ON(blocks == 0);
        WARN_ON(blksz == 0);
 
+       /* sanity check */
+       if (addr & ~0x1FFFF)
+               return -EINVAL;
+
        memset(&mrq, 0, sizeof(struct mmc_request));
        memset(&cmd, 0, sizeof(struct mmc_command));
        memset(&data, 0, sizeof(struct mmc_data));