Bug 470801 - Read from /proc/xen/xenbus does not honor O_NONBLOCK
Read from /proc/xen/xenbus does not honor O_NONBLOCK
Status: CLOSED ERRATA
Product: Red Hat Enterprise Linux 5
Classification: Red Hat
Component: kernel-xen (Show other bugs)
5.2
All Linux
low Severity low
: rc
: ---
Assigned To: Paolo Bonzini
chen yuwen
:
Depends On:
Blocks: 514491 607261 607262
  Show dependency treegraph
 
Reported: 2008-11-10 06:53 EST by CAI Qian
Modified: 2011-01-13 15:45 EST (History)
4 users (show)

See Also:
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 15:45:08 EST
Type: ---
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---


Attachments (Terms of Use)


External Trackers
Tracker ID Priority Status Summary Last Updated
Red Hat Product Errata RHSA-2011:0017 normal SHIPPED_LIVE Important: Red Hat Enterprise Linux 5.6 kernel security and bug fix update 2011-01-13 05:37:42 EST

  None (edit)
Description CAI Qian 2008-11-10 06:53:47 EST
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.
Comment 3 Paolo Bonzini 2010-06-23 12:26:35 EDT
I have a patch.
Comment 4 Paolo Bonzini 2010-06-24 12:07:53 EDT
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);
}
Comment 5 Paolo Bonzini 2010-07-02 05:21:13 EDT
Cai, upstream asked how we found the bug?  Was it simply by code inspection?
Comment 6 CAI Qian 2010-07-02 05:32:23 EDT
It was found by a test (proc01) in LTP to read every entry of the procfs.
Comment 7 RHEL Product and Program Management 2010-08-04 08:09:24 EDT
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.
Comment 9 Jarod Wilson 2010-08-10 20:11:47 EDT
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.
Comment 11 chen yuwen 2010-12-09 21:15:34 EST
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
Comment 13 errata-xmlrpc 2011-01-13 15:45:08 EST
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

Note You need to log in before you can comment on or make changes to this bug.