The Samba-Bugzilla – Attachment 10130 Details for
Bug 10731
sys_poll_intr(): wrong unit for timeout value
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
sys_poll_intr: fix timeout arithmetic
sys_poll_intr_timeout_fix.diff (text/plain), 1.18 KB, created by
Daniel Kobras (dead mail address)
on 2014-07-21 10:04:55 UTC
(
hide
)
Description:
sys_poll_intr: fix timeout arithmetic
Filename:
MIME Type:
Creator:
Daniel Kobras (dead mail address)
Created:
2014-07-21 10:04:55 UTC
Size:
1.18 KB
patch
obsolete
>commit d2ea06249ce96b034ae35567c33e0fca5d1ea477 >Author: Daniel Kobras <d.kobras@science-computing.de> >Date: Mon Jul 21 10:47:53 2014 +0200 > > sys_poll_intr: fix timeout arithmetic > > Callers of sys_poll_intr() assume timeout to be in milliseconds like > poll(2) expects, but implementation used nanosecond units. Also make > sure timeout doesn't become infinite by mistake during time arithmetic. > > Signed-off-by: Daniel Kobras <d.kobras@science-computing.de> > >diff --git a/lib/util/select.c b/lib/util/select.c >index 5e66344..99cd772 100644 >--- a/lib/util/select.c >+++ b/lib/util/select.c >@@ -42,9 +42,19 @@ int sys_poll_intr(struct pollfd *fds, int num_fds, int timeout) > if (errno != EINTR) { > break; > } >+ /* Infinite timeout, no need to adjust. */ >+ if (timeout < 0) { >+ continue; >+ } > clock_gettime_mono(&now); >- elapsed = nsec_time_diff(&now, &start); >- timeout = (orig_timeout - elapsed) / 1000000; >+ elapsed = nsec_time_diff(&now, &start) / 1000000; >+ timeout = orig_timeout - elapsed; >+ /* Unlikely, but might happen eg. when getting traced. >+ * Make sure we're not hanging in this case. >+ */ >+ if (timeout < 0) { >+ timeout = 0; >+ } > }; > return ret; > }
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Raw
Actions:
View
Attachments on
bug 10731
:
10130
|
10133
|
10142