Skip to contentSkip to conversation

iio: accel: sca3000: memory corruption in sca3000_read_first_n_hw_rb()

PATCH In review Dan Carpenter 2 participants 3 messages Aug 8, 2015 – Oct 3, 2015

Subsystems (4)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 iio: accel: sca3000: memory corruption in sca3000_read_first_n_hw_rb()

"num_read" is in byte units but we are write u16s so we end up write twice as much as intended.

drivers/staging/iio/accel/sca3000_ring.c +1 -1
index 23685e7..bd2c69f 100644
@@ -116,7 +116,7 @@ static int sca3000_read_first_n_hw_rb(struct iio_buffer *r,
 	if (ret)
 		goto error_ret;
 
-	for (i = 0; i < num_read; i++)
+	for (i = 0; i < num_read / sizeof(u16); i++)
 		*(((u16 *)rx) + i) = be16_to_cpup((__be16 *)rx + i);
 
 	if (copy_to_user(buf, rx, num_read))
maintainer
#1 lore raw
Quoted 4 lines · Dan Carpenter

"num_read" is in byte units but we are write u16s so we end up write twice as much as intended.

Hi Dan,

This is fine. Given it's an old bug, Greg is not going to take this
sort of fix until after the merge window. I won't be doing another
pull to him to go in during the merge window. Hence fastest route will be as a fix post 4.3-rc1.

Give me a poke if I haven't picked it up and sent it on by rc2 or so.

Thanks and good find.

Jonathan

Quoted 19 lines
drivers/staging/iio/accel/sca3000_ring.c +1 -2
index 23685e7..bd2c69f 100644
@@ -116,7 +116,7 @@ static int sca3000_read_first_n_hw_rb(struct iio_buffer *r,
 	if (ret)
 		goto error_ret;
 
-	for (i = 0; i < num_read; i++)
+	for (i = 0; i < num_read / sizeof(u16); i++)
 		*(((u16 *)rx) + i) = be16_to_cpup((__be16 *)rx + i);
 
 	if (copy_to_user(buf, rx, num_read))
--

To unsubscribe from this list: send the line "unsubscribe linux-iio" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html

maintainer
#2 lore raw
Quoted 12 lines · Jonathan Cameron
Quoted 4 lines · Dan Carpenter

"num_read" is in byte units but we are write u16s so we end up write twice as much as intended.

Hi Dan,

This is fine. Given it's an old bug, Greg is not going to take this
sort of fix until after the merge window. I won't be doing another
pull to him to go in during the merge window. Hence fastest route will be as a fix post 4.3-rc1.

Quoted 5 lines

Give me a poke if I haven't picked it up and sent it on by rc2 or so.

Thanks and good find.

Jonathan

Nearly forgot this one!

Anyhow, applied to the fixes-togreg branch of iio.git and marked for stable.

Jonathan

Quoted 25 lines
Quoted 15 lines
drivers/staging/iio/accel/sca3000_ring.c +1 -2
index 23685e7..bd2c69f 100644
@@ -116,7 +116,7 @@ static int sca3000_read_first_n_hw_rb(struct iio_buffer *r,
 	if (ret)
 		goto error_ret;
 
-	for (i = 0; i < num_read; i++)
+	for (i = 0; i < num_read / sizeof(u16); i++)
 		*(((u16 *)rx) + i) = be16_to_cpup((__be16 *)rx + i);
 
 	if (copy_to_user(buf, rx, num_read))
--
Quoted 4 lines

To unsubscribe from this list: send the line "unsubscribe linux-iio" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html

--
To unsubscribe from this list: send the line "unsubscribe linux-iio" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html