summaryrefslogtreecommitdiff
path: root/drivers/misc/eeprom/at24.c
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@quicinc.com>2018-01-11 04:14:45 -0800
committerGerrit - the friendly Code Review server <code-review@localhost>2018-01-11 04:14:45 -0800
commite525ef12a4ba7da1569592615fddf082c51b2f3e (patch)
tree5733d8ac1a78313edf973cf0e265f0fefafd4308 /drivers/misc/eeprom/at24.c
parent1707cb3ff140dec01127669e1c88d5b850f272e4 (diff)
parent80eb7ccae411759ac85501602aae882dede1c7fa (diff)
Merge "Merge android-4.4.104 (8bc4213) into msm-4.4"
Diffstat (limited to 'drivers/misc/eeprom/at24.c')
-rw-r--r--drivers/misc/eeprom/at24.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/misc/eeprom/at24.c b/drivers/misc/eeprom/at24.c
index 5d7c0900fa1b..f112c5bc082a 100644
--- a/drivers/misc/eeprom/at24.c
+++ b/drivers/misc/eeprom/at24.c
@@ -257,6 +257,9 @@ static ssize_t at24_read(struct at24_data *at24,
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.
@@ -311,6 +314,9 @@ static ssize_t at24_eeprom_write(struct at24_data *at24, const char *buf,
unsigned long timeout, write_time;
unsigned next_page;
+ if (offset + count > at24->chip.byte_len)
+ return -EINVAL;
+
/* Get corresponding I2C address and adjust offset */
client = at24_translate_offset(at24, &offset);