Explorar o código

sdio: check that addresses are within the address space

Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
Pierre Ossman %!s(int64=16) %!d(string=hai) anos
pai
achega
be6f19fc24
Modificáronse 1 ficheiros con 8 adicións e 0 borrados
  1. 8 0
      drivers/mmc/core/sdio_ops.c

+ 8 - 0
drivers/mmc/core/sdio_ops.c

@@ -76,6 +76,10 @@ int mmc_io_rw_direct(struct mmc_card *card, int write, unsigned fn,
 	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;
@@ -125,6 +129,10 @@ int mmc_io_rw_extended(struct mmc_card *card, int write, unsigned fn,
 	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));