Question about verify_area() removal from socket.c

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

 



I've ran into a small problem with the "recv" system call while testing,
and wanted some clarification.  There's mention of "verify_area() fixes" by
Alan, but no actual code.  Thus, I'm assuming the fixes meant removing any
references of verify_area from socket.c.  I have two questions about this:

1)  Was this done for performance reasons, and if so, what were they?

2)  In the "sys_recvfrom" definition, within socket.c, how does the
function handle an invalid address?  That is, is there any checking done on
the variable "ubuf"?

Using the "recv01" test from the LTP testsuite, a test is done to see if
the "recv" system call returns EFAULT as documented in the manpage.  EFAULT
should return when the receive buffer pointer points outside the process's
address space.  Strangely, the test passes about 20% of the time and fails
the remaining 80% .  Looking at the code for "recvfrom", I can add the
following two lines after line 1253:
   1251         sock = sockfd_lookup(fd, &err);
   1252         if (!sock)
   1253                 goto out;
***1254       err2 = verify_area(VERIFY_WRITE, ubuf, size);
***1255         if ( err2 ) return -EFAULT;

to handle the situation.  However, since I don't know the meaning of the
comment from Alan, I'm hesitant to make this change.  Any help would be
appreciated.

Thanks,
- Robbie

Robert V. Williamson
Linux Test Project
IBM Linux Technology Center
Phone: (512) 838-9295   T/L: 638-9295
http://ltp.sourceforge.net

-
: send the line "unsubscribe linux-net" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Netdev]     [Ethernet Bridging]     [Linux 802.1Q VLAN]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Git]     [Bugtraq]     [Yosemite News and Information]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux PCI]     [Linux Admin]     [Samba]

  Powered by Linux