Re: [PATCH] Typecasting required for comparing unlike datatypes

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 12/10/2010 01:48 PM, KAMEZAWA Hiroyuki wrote:
On Wed,  8 Dec 2010 18:25:00 +0530
Harsh Prateek Bora<harsh@xxxxxxxxxxxxxxxxxx>  wrote:

The existing code causes the if condition to pass when it should fail
on a *64-bit kernel* because of implicit data type conversions. It can
be observed by passing pos = -1 and count = some positive number.
This results in function returning EOVERFLOW instead of EINVAL.

With this patch, the function returns EINVAL when pos is -1 and count
is a positive number. This can be tested by calling sendfile with
offset = -1 and count = some positive number on a 64-bit kernel.

Signed-off-by: Harsh Prateek Bora<harsh@xxxxxxxxxxxxxxxxxx>

Acked-by: KAMEZAWA Hiroyuki<kamezawa.hiroyu@xxxxxxxxxxxxxx>

I'm sorry for annoying you.

Oh, but I am not annoyed, .. Thanks for the ack though ! :)

---
  fs/read_write.c |    2 +-
  1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/fs/read_write.c b/fs/read_write.c
index 431a0ed..a8eabd4 100644
--- a/fs/read_write.c
+++ b/fs/read_write.c
@@ -38,7 +38,7 @@ __negative_fpos_check(struct file *file, loff_t pos, size_t count)
  	 * pos or pos+count is negative here, check overflow.
  	 * too big "count" will be caught in rw_verify_area().
  	 */
-	if ((pos<  0)&&  (pos + count<  pos))
+	if ((pos<  0)&&  ( (loff_t) (pos + count)<  pos))
  		return -EOVERFLOW;
  	if (file->f_mode&  FMODE_UNSIGNED_OFFSET)
  		return 0;
--
1.7.1.1




--
To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Ext4 Filesystem]     [Union Filesystem]     [Filesystem Testing]     [Ceph Users]     [Ecryptfs]     [AutoFS]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux Cachefs]     [Reiser Filesystem]     [Linux RAID]     [Samba]     [Device Mapper]     [CEPH Development]
  Powered by Linux