misc/152485: null(4)/zero(4): /dev/null seek offset is not reported correctly

Alexander Best arundel at freebsd.org
Thu Feb 24 00:40:10 UTC 2011


The following reply was made to PR misc/152485; it has been noted by GNATS.

From: Alexander Best <arundel at freebsd.org>
To: bug-followup at freebsd.org
Cc:  
Subject: Re: misc/152485: null(4)/zero(4): /dev/null seek offset is not reported correctly
Date: Thu, 24 Feb 2011 00:37:54 +0000

 --tThc/1wpZn/ma/RB
 Content-Type: text/plain; charset=us-ascii
 Content-Disposition: inline
 
 does this patch solve the issue for you?
 
 cheers.
 alex
 
 -- 
 a13x
 
 --tThc/1wpZn/ma/RB
 Content-Type: text/plain; charset=us-ascii
 Content-Disposition: attachment; filename="null.c.diff"
 
 diff --git a/sys/dev/null/null.c b/sys/dev/null/null.c
 index 3005c19..a83be6f 100644
 --- a/sys/dev/null/null.c
 +++ b/sys/dev/null/null.c
 @@ -47,11 +47,12 @@ static struct cdev *zero_dev;
  
  static d_write_t null_write;
  static d_ioctl_t null_ioctl;
 +static d_read_t null_read;
  static d_read_t zero_read;
  
  static struct cdevsw null_cdevsw = {
  	.d_version =	D_VERSION,
 -	.d_read =	(d_read_t *)nullop,
 +	.d_read =	null_read,
  	.d_write =	null_write,
  	.d_ioctl =	null_ioctl,
  	.d_name =	"null",
 @@ -71,6 +72,19 @@ static void *zbuf;
  static int
  null_write(struct cdev *dev __unused, struct uio *uio, int flags __unused)
  {
 +
 +	uio->uio_offset += uio->uio_resid;
 +	uio->uio_resid = 0;
 +
 +	return (0);
 +}
 +
 +/* ARGSUSED */
 +static int
 +null_read(struct cdev *dev __unused, struct uio *uio, int flags __unused)
 +{
 +
 +	uio->uio_offset += uio->uio_resid;
  	uio->uio_resid = 0;
  
  	return (0);
 
 --tThc/1wpZn/ma/RB--


More information about the freebsd-bugs mailing list