Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 23 Dec 2002 00:32:25 -0600 (CST)
From:      Sean Kelly <smkelly@zombie.org>
To:        FreeBSD-gnats-submit@FreeBSD.org
Subject:   i386/46486: read() on /dev/io locks system
Message-ID:  <20021223063225.6864B415F8@edgemaster.zombie.org>

next in thread | raw e-mail | index | archive | help

>Number:         46486
>Category:       i386
>Synopsis:       read() on /dev/io locks system
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Sun Dec 22 22:40:00 PST 2002
>Closed-Date:
>Last-Modified:
>Originator:     Sean Kelly
>Release:        FreeBSD 5.0-CURRENT i386
>Organization:
>Environment:
System: FreeBSD edgemaster.zombie.org 5.0-CURRENT FreeBSD 5.0-CURRENT #1: Sat Dec 21 02:05:20 CST 2002 root@edgemaster.zombie.org:/usr/obj/usr/src/sys/EDGEMASTER i386


	
>Description:
	Doing a read() or write() on /dev/io will cause the system to enter
	an infinite loop with Giant locked. This is the case on RELENG_5 and
	HEAD.
	More information can be found in this thread:
	http://www.FreeBSD.org/cgi/getmsg.cgi?fetch=1400050+0+/usr/local/www/db/text/2002/freebsd-current/20021222.freebsd-current

	And specifically: http://www.FreeBSD.org/cgi/getmsg.cgi?fetch=1424072+0+/usr/local/www/db/text/2002/freebsd-current/20021222.freebsd-current

>How-To-Repeat:
	$ su -
	# cat /dev/io
	*system hang*
>Fix:

Index: sys/i386/i386/mem.c
===================================================================
RCS file: /usr/home/ncvs/src/sys/i386/i386/mem.c,v
retrieving revision 1.99
diff -u -p -r1.99 mem.c
--- sys/i386/i386/mem.c 11 Oct 2002 14:58:28 -0000      1.99
+++ sys/i386/i386/mem.c 21 Dec 2002 07:54:29 -0000
@@ -195,6 +195,8 @@ mmrw(dev_t dev, struct uio *uio, int fla
                                return (EFAULT);
                        error = uiomove((caddr_t)(int)uio->uio_offset, (int)c, u
io);
                        continue;
+               default:
+                       return (ENODEV);
                }

                if (error)

>Release-Note:
>Audit-Trail:
>Unformatted:

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20021223063225.6864B415F8>