eeprom: at24: check at24_read/write arguments
[platform/kernel/linux-rpi.git] / drivers / misc / eeprom / at24.c
index e0d018e..372b206 100644 (file)
@@ -507,6 +507,9 @@ static int at24_read(void *priv, unsigned int off, void *val, size_t count)
        if (unlikely(!count))
                return count;
 
+       if (off + count > at24->chip.byte_len)
+               return -EINVAL;
+
        /*
         * Read data from chip, protecting against concurrent updates
         * from this host, but not from other I2C masters.
@@ -539,6 +542,9 @@ static int at24_write(void *priv, unsigned int off, void *val, size_t count)
        if (unlikely(!count))
                return -EINVAL;
 
+       if (off + count > at24->chip.byte_len)
+               return -EINVAL;
+
        /*
         * Write data to chip, protecting against concurrent updates
         * from this host, but not from other I2C masters.