iputils/iputils-20121221-eperm-flood.patch

27 lines
935 B
Diff

--- iputils-s20121221/ping_common.c 2014-03-26 10:41:49.905136743 +0100
+++ iputils-s20121221-new/ping_common.c 2014-03-26 10:57:38.259918104 +0100
@@ -525,10 +525,11 @@ resend:
if (i > 0) {
/* Apparently, it is some fatal bug. */
abort();
- } else if (errno == ENOBUFS || errno == ENOMEM) {
+ } else if (errno == ENOBUFS || errno == ENOMEM || errno == EPERM) {
int nores_interval;
- /* Device queue overflow or OOM. Packet is not sent. */
+ /* Device queue overflow, OOM or operation not permitted.
+ * Packet is not sent. */
tokens = 0;
/* Slowdown. This works only in adaptive mode (option -A) */
rtt_addend += (rtt < 8*50000 ? rtt/8 : 50000);
@@ -537,7 +538,8 @@ resend:
nores_interval = SCHINT(interval/2);
if (nores_interval > 500)
nores_interval = 500;
- oom_count++;
+ if (errno != EPERM)
+ oom_count++;
if (oom_count*nores_interval < lingertime)
return nores_interval;
i = 0;