aboutsummaryrefslogtreecommitdiff
path: root/net/core/sock.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@woody.linux-foundation.org>2007-05-24 18:41:28 -0700
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-05-24 18:41:28 -0700
commit1c1ee4c3e7e16d23166a624a132889df3c540a18 (patch)
treec6f20db95c421f7171f85bbe022f58a678b93ba5 /net/core/sock.c
parent91396c1e2d73a041d86935fb8371e8d48b48b663 (diff)
parent14e50e57aedb2a89cf79b77782879769794cab7b (diff)
Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
* 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6: (25 commits) [XFRM]: Allow packet drops during larval state resolution. [CASSINI]: Check pci_set_mwi() return value. [NET]: "wrong timeout value" in sk_wait_data() v2 [NETFILTER]: nf_nat_h323: call set_h225_addr instead of set_h225_addr_hook [NETFILTER]: nf_conntrack_h323: add missing T.120 address in OLCA [NETFILTER]: nf_conntrack_h323: remove unnecessary process of Information signal [NETFILTER]: nf_conntrack_h323: fix get_h225_addr() for IPv6 address access [NETFILTER]: nf_conntrack_h323: fix ASN.1 types [NETFILTER]: nf_conntrack_ftp: fix newline sequence number calculation [NETFILTER]: nf_conntrack_ftp: fix newline sequence number update [NET_SCHED]: sch_htb: fix event cache time calculation [DCCP]: Fix build warning when debugging is disabled. [TIPC]: Fixed erroneous introduction of for_each_netdev [RTNETLINK]: Fix sending netlink message when replace route. [TR]: Use menuconfig objects. [ARCNET]: Use menuconfig objects. [TIPC]: Use menuconfig objects. [SCTP]: Use menuconfig objects. [IPVS]: Use menuconfig objects. [DCCP]: Use menuconfig objects. ...
Diffstat (limited to 'net/core/sock.c')
-rw-r--r--net/core/sock.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/net/core/sock.c b/net/core/sock.c
index 22183c2ef28..7e51d3a5e4f 100644
--- a/net/core/sock.c
+++ b/net/core/sock.c
@@ -206,7 +206,19 @@ static int sock_set_timeout(long *timeo_p, char __user *optval, int optlen)
return -EINVAL;
if (copy_from_user(&tv, optval, sizeof(tv)))
return -EFAULT;
-
+ if (tv.tv_usec < 0 || tv.tv_usec >= USEC_PER_SEC)
+ return -EDOM;
+
+ if (tv.tv_sec < 0) {
+ static int warned = 0;
+ *timeo_p = 0;
+ if (warned < 10 && net_ratelimit())
+ warned++;
+ printk(KERN_INFO "sock_set_timeout: `%s' (pid %d) "
+ "tries to set negative timeout\n",
+ current->comm, current->pid);
+ return 0;
+ }
*timeo_p = MAX_SCHEDULE_TIMEOUT;
if (tv.tv_sec == 0 && tv.tv_usec == 0)
return 0;