Bug 470801
| Summary: | Read from /proc/xen/xenbus does not honor O_NONBLOCK | |||
|---|---|---|---|---|
| Product: | Red Hat Enterprise Linux 5 | Reporter: | Qian Cai <qcai> | |
| Component: | kernel-xen | Assignee: | Paolo Bonzini <pbonzini> | |
| Status: | CLOSED ERRATA | QA Contact: | chen yuwen <yuchen> | |
| Severity: | low | Docs Contact: | ||
| Priority: | low | |||
| Version: | 5.2 | CC: | clalance, drjones, pbonzini, xen-maint | |
| Target Milestone: | rc | |||
| Target Release: | --- | |||
| Hardware: | All | |||
| OS: | Linux | |||
| Whiteboard: | ||||
| Fixed In Version: | Doc Type: | Bug Fix | ||
| Doc Text: | Story Points: | --- | ||
| Clone Of: | ||||
| : | 607261 607262 (view as bug list) | Environment: | ||
| Last Closed: | 2011-01-13 20:45:08 UTC | Type: | --- | |
| Regression: | --- | Mount Type: | --- | |
| Documentation: | --- | CRM: | ||
| Verified Versions: | Category: | --- | ||
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | ||
| Cloudforms Team: | --- | Target Upstream Version: | ||
| Embargoed: | ||||
| Bug Depends On: | ||||
| Bug Blocks: | 514491, 607261, 607262 | |||
I have a patch. reproducer:
#include <stdlib.h>
#include <errno.h>
#include <fcntl.h>
#include <unistd.h>
int main()
{
char buf[256];
int fd = open ("/proc/xen/xenbus", O_RDONLY | O_NONBLOCK);
if (fd == -1) {
perror ("/proc/xen/xenbus");
exit (1);
}
alarm (5);
while (read (fd, buf, 256) == -1 && errno != EAGAIN)
;
puts ("works");
exit (0);
}
Cai, upstream asked how we found the bug? Was it simply by code inspection? It was found by a test (proc01) in LTP to read every entry of the procfs. This request was evaluated by Red Hat Product Management for inclusion in a Red Hat Enterprise Linux maintenance release. Product Management has requested further review of this request by Red Hat Engineering, for potential inclusion in a Red Hat Enterprise Linux Update release for currently deployed products. This request is not yet committed for inclusion in an Update release. in kernel-2.6.18-211.el5 You can download this test kernel from http://people.redhat.com/jwilson/el5 Detailed testing feedback is always welcomed. Reproduced on kernel 2.6.18-92.el5xen. #gcc -o test test.c # ./test Alarm Clock ---------------------- Verified on kernel 2.6.18-221.el5xen. # ./test works An advisory has been issued which should help the problem described in this bug report. This report is therefore being closed with a resolution of ERRATA. For more information on therefore solution and/or where to find the updated files, please follow the link below. You may reopen this bug report if the solution does not work for you. http://rhn.redhat.com/errata/RHSA-2011-0017.html |
Description of problem: After open(2) on /proc/xen/xenbus with O_NONBLOCK flag, read(2) on the file is blocked, and wait for an event. Version-Release number of selected component (if applicable): kernel-xen-2.6.18-92.el5 How reproducible: Always Steps to Reproduce: 1. open ("/proc/xen/xenbus", O_RDONLY | O_NONBLOCK); 2. read (fd, buf, 4096); Actual results: read(2) is blocked. Expected results: read(2) shall return EAGAIN.