Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 22 Jan 2003 14:48:21 +0100
From:      Bernd Walter <ticso@cicely8.cicely.de>
To:        phk@freebsd.org
Cc:        Joerg Wunsch <joerg_wunsch@uriah.heep.sax.de>, ticso@cicely.de, freebsd-current@freebsd.org
Subject:   Re: I want a sysctl kern.allow_shooting_into_my_foot!
Message-ID:  <20030122134820.GD758@cicely8.cicely.de>
In-Reply-To: <25634.1043242828@critter.freebsd.dk>
References:  <20030122135320.A70341@uriah.heep.sax.de> <25634.1043242828@critter.freebsd.dk>

next in thread | previous in thread | raw e-mail | index | archive | help
On Wed, Jan 22, 2003 at 02:40:28PM +0100, phk@freebsd.org wrote:
> In message <20030122135320.A70341@uriah.heep.sax.de>, Joerg Wunsch writes:
> 
> >Here's the result.  What does it mean to me?  (debug flag set from
> >DDB, and turned off in single-user again.)
> 
> Here's the bug:
> 
> 	g_dev_open(da1a, 3, 0, 0)
> 
> da1a opened (FREAD|FWRITE)
> 
> 	g_access_rel(0xc1178a40(da1a), 1, 1, 0)
> 	open delta:[r1w1e0] old:[r0w0e0] provider:[r0w0e0] 0xc11d4f00(da1a)
> 	g_post_event(2, 0, 0, 0xc11d4f00, 0xc1178a40)
> 	g_access_rel(0xc1178f40(da1), 1, 1, 1)
> 	open delta:[r1w1e1] old:[r0w0e0] provider:[r0w0e0] 0xc1194d00(da1)
> 	g_post_event(2, 0, 0, 0xc1194d00, 0xc1178f40)
> 	g_disk_access(da1, 1, 1, 1)
> 	g_do_event(0xc1178780) 2 m:0 g:0 p:0xc11d4f00 c:0xc1178a40 - 
> 	EV_SPOILED(0xc11d4f00(da1a),0xc1178a40)
> 	g_do_event(0xc1178740) 2 m:0 g:0 p:0xc1194d00 c:0xc1178f40 - 
> 	EV_SPOILED(0xc1194d00(da1),0xc1178f40)
> 	spoiling 0xc1178e40 (da1) (0)
> 	g_dev_close(da1a, 0, 0, 0)
> 
> da1a closed but without FREAD|FWRITE, which turns the close into a no-op.

[125]cicely5# grep d_open *
grep: CVS: Operation not permitted
vinumext.h:d_open_t vinumopen;
vinumio.c:      drive->lasterror = (dsw->d_open) (drive->dev, FWRITE | FREAD, 0, NULL);
Exit 2
[126]cicely5# grep d_close *
grep: CVS: Operation not permitted
vinumext.h:d_close_t vinumclose;
vinumio.c:    error = (*devsw(drive->dev)->d_close) (drive->dev, 0, 0, NULL);
Exit 2

You are saying that the close should read?
error = (*devsw(drive->dev)->d_close) (drive->dev, FWRITE | FREAD, 0, NULL);

-- 
B.Walter              COSMO-Project         http://www.cosmo-project.de
ticso@cicely.de         Usergroup           info@cosmo-project.de


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




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