mail archive of the barebox mailing list
 help / color / mirror / Atom feed
* [PATCH] fs: add basic sanity check before accessing the files array
@ 2010-07-27 13:16 Baruch Siach
  2010-07-27 13:34 ` Jean-Christophe PLAGNIOL-VILLARD
  0 siblings, 1 reply; 5+ messages in thread
From: Baruch Siach @ 2010-07-27 13:16 UTC (permalink / raw)
  To: barebox

This patch adds some basic file descriptor sanity checks to the file access
routines. Check whether the given file descriptor is in the files array range,
and whether the file entry is valid.

Signed-off-by: Baruch Siach <baruch@tkos.co.il>
---
 fs/fs.c |   40 ++++++++++++++++++++++++++++++++++++++++
 1 files changed, 40 insertions(+), 0 deletions(-)

diff --git a/fs/fs.c b/fs/fs.c
index 8417067..449dcc2 100644
--- a/fs/fs.c
+++ b/fs/fs.c
@@ -457,6 +457,11 @@ int ioctl(int fd, int request, void *buf)
 	struct fs_driver_d *fsdrv;
 	FILE *f = &files[fd];
 
+	if (fd < 0 || fd >= MAX_FILES || !f->in_use) {
+		errno = -EBADF;
+		return errno;
+	}
+
 	dev = f->dev;
 
 	fsdrv = (struct fs_driver_d *)dev->driver->type_data;
@@ -474,6 +479,11 @@ int read(int fd, void *buf, size_t count)
 	struct fs_driver_d *fsdrv;
 	FILE *f = &files[fd];
 
+	if (fd < 0 || fd >= MAX_FILES || !f->in_use) {
+		errno = -EBADF;
+		return errno;
+	}
+
 	dev = f->dev;
 
 	fsdrv = (struct fs_driver_d *)dev->driver->type_data;
@@ -494,6 +504,11 @@ ssize_t write(int fd, const void *buf, size_t count)
 	struct fs_driver_d *fsdrv;
 	FILE *f = &files[fd];
 
+	if (fd < 0 || fd >= MAX_FILES || !f->in_use) {
+		errno = -EBADF;
+		return errno;
+	}
+
 	dev = f->dev;
 
 	fsdrv = (struct fs_driver_d *)dev->driver->type_data;
@@ -524,6 +539,11 @@ off_t lseek(int fildes, off_t offset, int whence)
 	FILE *f = &files[fildes];
 	off_t pos;
 
+	if (fildes < 0 || fildes >= MAX_FILES || !f->in_use) {
+		errno = -EBADF;
+		return -1;
+	}
+
 	errno = 0;
 
 	dev = f->dev;
@@ -567,6 +587,11 @@ int erase(int fd, size_t count, unsigned long offset)
 	struct fs_driver_d *fsdrv;
 	FILE *f = &files[fd];
 
+	if (fd < 0 || fd >= MAX_FILES || !f->in_use) {
+		errno = -EBADF;
+		return errno;
+	}
+
 	dev = f->dev;
 
 	fsdrv = (struct fs_driver_d *)dev->driver->type_data;
@@ -589,6 +614,11 @@ int protect(int fd, size_t count, unsigned long offset, int prot)
 	struct fs_driver_d *fsdrv;
 	FILE *f = &files[fd];
 
+	if (fd < 0 || fd >= MAX_FILES || !f->in_use) {
+		errno = -EBADF;
+		return errno;
+	}
+
 	dev = f->dev;
 
 	fsdrv = (struct fs_driver_d *)dev->driver->type_data;
@@ -627,6 +657,11 @@ void *memmap(int fd, int flags)
 	FILE *f = &files[fd];
 	void *ret = (void *)-1;
 
+	if (fd < 0 || fd >= MAX_FILES || !f->in_use) {
+		errno = -EBADF;
+		return ret;
+	}
+
 	dev = f->dev;
 
 	fsdrv = (struct fs_driver_d *)dev->driver->type_data;
@@ -646,6 +681,11 @@ int close(int fd)
 	struct fs_driver_d *fsdrv;
 	FILE *f = &files[fd];
 
+	if (fd < 0 || fd >= MAX_FILES || !f->in_use) {
+		errno = -EBADF;
+		return errno;
+	}
+
 	dev = f->dev;
 
 	fsdrv = (struct fs_driver_d *)dev->driver->type_data;
-- 
1.7.1


_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] fs: add basic sanity check before accessing the files array
  2010-07-27 13:16 [PATCH] fs: add basic sanity check before accessing the files array Baruch Siach
@ 2010-07-27 13:34 ` Jean-Christophe PLAGNIOL-VILLARD
  2010-07-27 13:52   ` Baruch Siach
  2010-07-28  5:27   ` [PATCHv2] " Baruch Siach
  0 siblings, 2 replies; 5+ messages in thread
From: Jean-Christophe PLAGNIOL-VILLARD @ 2010-07-27 13:34 UTC (permalink / raw)
  To: Baruch Siach; +Cc: barebox

Hi,

	it will be better to use a common function to do the check

Best Regards,
J.
On 16:16 Tue 27 Jul     , Baruch Siach wrote:
> This patch adds some basic file descriptor sanity checks to the file access
> routines. Check whether the given file descriptor is in the files array range,
> and whether the file entry is valid.
> 
> Signed-off-by: Baruch Siach <baruch@tkos.co.il>
> ---
>  fs/fs.c |   40 ++++++++++++++++++++++++++++++++++++++++
>  1 files changed, 40 insertions(+), 0 deletions(-)
> 
> diff --git a/fs/fs.c b/fs/fs.c
> index 8417067..449dcc2 100644
> --- a/fs/fs.c
> +++ b/fs/fs.c
> @@ -457,6 +457,11 @@ int ioctl(int fd, int request, void *buf)
>  	struct fs_driver_d *fsdrv;
>  	FILE *f = &files[fd];
>  
> +	if (fd < 0 || fd >= MAX_FILES || !f->in_use) {
> +		errno = -EBADF;
> +		return errno;
> +	}
> +
>  	dev = f->dev;
>  
>  	fsdrv = (struct fs_driver_d *)dev->driver->type_data;
> @@ -474,6 +479,11 @@ int read(int fd, void *buf, size_t count)
>  	struct fs_driver_d *fsdrv;
>  	FILE *f = &files[fd];
>  
> +	if (fd < 0 || fd >= MAX_FILES || !f->in_use) {
> +		errno = -EBADF;
> +		return errno;
> +	}
> +
>  	dev = f->dev;
>  
>  	fsdrv = (struct fs_driver_d *)dev->driver->type_data;
> @@ -494,6 +504,11 @@ ssize_t write(int fd, const void *buf, size_t count)
>  	struct fs_driver_d *fsdrv;
>  	FILE *f = &files[fd];
>  
> +	if (fd < 0 || fd >= MAX_FILES || !f->in_use) {
> +		errno = -EBADF;
> +		return errno;
> +	}
> +
>  	dev = f->dev;
>  
>  	fsdrv = (struct fs_driver_d *)dev->driver->type_data;
> @@ -524,6 +539,11 @@ off_t lseek(int fildes, off_t offset, int whence)
>  	FILE *f = &files[fildes];
>  	off_t pos;
>  
> +	if (fildes < 0 || fildes >= MAX_FILES || !f->in_use) {
> +		errno = -EBADF;
> +		return -1;
> +	}
> +
>  	errno = 0;
>  
>  	dev = f->dev;
> @@ -567,6 +587,11 @@ int erase(int fd, size_t count, unsigned long offset)
>  	struct fs_driver_d *fsdrv;
>  	FILE *f = &files[fd];
>  
> +	if (fd < 0 || fd >= MAX_FILES || !f->in_use) {
> +		errno = -EBADF;
> +		return errno;
> +	}
> +
>  	dev = f->dev;
>  
>  	fsdrv = (struct fs_driver_d *)dev->driver->type_data;
> @@ -589,6 +614,11 @@ int protect(int fd, size_t count, unsigned long offset, int prot)
>  	struct fs_driver_d *fsdrv;
>  	FILE *f = &files[fd];
>  
> +	if (fd < 0 || fd >= MAX_FILES || !f->in_use) {
> +		errno = -EBADF;
> +		return errno;
> +	}
> +
>  	dev = f->dev;
>  
>  	fsdrv = (struct fs_driver_d *)dev->driver->type_data;
> @@ -627,6 +657,11 @@ void *memmap(int fd, int flags)
>  	FILE *f = &files[fd];
>  	void *ret = (void *)-1;
>  
> +	if (fd < 0 || fd >= MAX_FILES || !f->in_use) {
> +		errno = -EBADF;
> +		return ret;
> +	}
> +
>  	dev = f->dev;
>  
>  	fsdrv = (struct fs_driver_d *)dev->driver->type_data;
> @@ -646,6 +681,11 @@ int close(int fd)
>  	struct fs_driver_d *fsdrv;
>  	FILE *f = &files[fd];
>  
> +	if (fd < 0 || fd >= MAX_FILES || !f->in_use) {
> +		errno = -EBADF;
> +		return errno;
> +	}
> +
>  	dev = f->dev;
>  
>  	fsdrv = (struct fs_driver_d *)dev->driver->type_data;
> -- 
> 1.7.1
> 
> 
> _______________________________________________
> barebox mailing list
> barebox@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/barebox

_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] fs: add basic sanity check before accessing the files array
  2010-07-27 13:34 ` Jean-Christophe PLAGNIOL-VILLARD
@ 2010-07-27 13:52   ` Baruch Siach
  2010-07-28  5:27   ` [PATCHv2] " Baruch Siach
  1 sibling, 0 replies; 5+ messages in thread
From: Baruch Siach @ 2010-07-27 13:52 UTC (permalink / raw)
  To: Jean-Christophe PLAGNIOL-VILLARD; +Cc: barebox

Hi Jean-Christophe,

On Tue, Jul 27, 2010 at 03:34:07PM +0200, Jean-Christophe PLAGNIOL-VILLARD wrote:
> 	it will be better to use a common function to do the check

OK. Will do.

baruch

> On 16:16 Tue 27 Jul     , Baruch Siach wrote:
> > This patch adds some basic file descriptor sanity checks to the file access
> > routines. Check whether the given file descriptor is in the files array range,
> > and whether the file entry is valid.
> > 
> > Signed-off-by: Baruch Siach <baruch@tkos.co.il>
> > ---
> >  fs/fs.c |   40 ++++++++++++++++++++++++++++++++++++++++
> >  1 files changed, 40 insertions(+), 0 deletions(-)
> > 
> > diff --git a/fs/fs.c b/fs/fs.c
> > index 8417067..449dcc2 100644
> > --- a/fs/fs.c
> > +++ b/fs/fs.c
> > @@ -457,6 +457,11 @@ int ioctl(int fd, int request, void *buf)
> >  	struct fs_driver_d *fsdrv;
> >  	FILE *f = &files[fd];
> >  
> > +	if (fd < 0 || fd >= MAX_FILES || !f->in_use) {
> > +		errno = -EBADF;
> > +		return errno;
> > +	}
> > +
> >  	dev = f->dev;
> >  
> >  	fsdrv = (struct fs_driver_d *)dev->driver->type_data;
> > @@ -474,6 +479,11 @@ int read(int fd, void *buf, size_t count)
> >  	struct fs_driver_d *fsdrv;
> >  	FILE *f = &files[fd];
> >  
> > +	if (fd < 0 || fd >= MAX_FILES || !f->in_use) {
> > +		errno = -EBADF;
> > +		return errno;
> > +	}
> > +
> >  	dev = f->dev;
> >  
> >  	fsdrv = (struct fs_driver_d *)dev->driver->type_data;
> > @@ -494,6 +504,11 @@ ssize_t write(int fd, const void *buf, size_t count)
> >  	struct fs_driver_d *fsdrv;
> >  	FILE *f = &files[fd];
> >  
> > +	if (fd < 0 || fd >= MAX_FILES || !f->in_use) {
> > +		errno = -EBADF;
> > +		return errno;
> > +	}
> > +
> >  	dev = f->dev;
> >  
> >  	fsdrv = (struct fs_driver_d *)dev->driver->type_data;
> > @@ -524,6 +539,11 @@ off_t lseek(int fildes, off_t offset, int whence)
> >  	FILE *f = &files[fildes];
> >  	off_t pos;
> >  
> > +	if (fildes < 0 || fildes >= MAX_FILES || !f->in_use) {
> > +		errno = -EBADF;
> > +		return -1;
> > +	}
> > +
> >  	errno = 0;
> >  
> >  	dev = f->dev;
> > @@ -567,6 +587,11 @@ int erase(int fd, size_t count, unsigned long offset)
> >  	struct fs_driver_d *fsdrv;
> >  	FILE *f = &files[fd];
> >  
> > +	if (fd < 0 || fd >= MAX_FILES || !f->in_use) {
> > +		errno = -EBADF;
> > +		return errno;
> > +	}
> > +
> >  	dev = f->dev;
> >  
> >  	fsdrv = (struct fs_driver_d *)dev->driver->type_data;
> > @@ -589,6 +614,11 @@ int protect(int fd, size_t count, unsigned long offset, int prot)
> >  	struct fs_driver_d *fsdrv;
> >  	FILE *f = &files[fd];
> >  
> > +	if (fd < 0 || fd >= MAX_FILES || !f->in_use) {
> > +		errno = -EBADF;
> > +		return errno;
> > +	}
> > +
> >  	dev = f->dev;
> >  
> >  	fsdrv = (struct fs_driver_d *)dev->driver->type_data;
> > @@ -627,6 +657,11 @@ void *memmap(int fd, int flags)
> >  	FILE *f = &files[fd];
> >  	void *ret = (void *)-1;
> >  
> > +	if (fd < 0 || fd >= MAX_FILES || !f->in_use) {
> > +		errno = -EBADF;
> > +		return ret;
> > +	}
> > +
> >  	dev = f->dev;
> >  
> >  	fsdrv = (struct fs_driver_d *)dev->driver->type_data;
> > @@ -646,6 +681,11 @@ int close(int fd)
> >  	struct fs_driver_d *fsdrv;
> >  	FILE *f = &files[fd];
> >  
> > +	if (fd < 0 || fd >= MAX_FILES || !f->in_use) {
> > +		errno = -EBADF;
> > +		return errno;
> > +	}
> > +
> >  	dev = f->dev;
> >  
> >  	fsdrv = (struct fs_driver_d *)dev->driver->type_data;
> > -- 
> > 1.7.1

-- 
                                                     ~. .~   Tk Open Systems
=}------------------------------------------------ooO--U--Ooo------------{=
   - baruch@tkos.co.il - tel: +972.2.679.5364, http://www.tkos.co.il -

_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCHv2] fs: add basic sanity check before accessing the files array
  2010-07-27 13:34 ` Jean-Christophe PLAGNIOL-VILLARD
  2010-07-27 13:52   ` Baruch Siach
@ 2010-07-28  5:27   ` Baruch Siach
  2010-07-28  6:22     ` Sascha Hauer
  1 sibling, 1 reply; 5+ messages in thread
From: Baruch Siach @ 2010-07-28  5:27 UTC (permalink / raw)
  To: barebox

This patch adds some basic file descriptor sanity checks to the file access
routines. Check whether the given file descriptor is in the files array range,
and whether the file entry is valid.

Signed-off-by: Baruch Siach <baruch@tkos.co.il>
---
 fs/fs.c |   34 ++++++++++++++++++++++++++++++++++
 1 files changed, 34 insertions(+), 0 deletions(-)

diff --git a/fs/fs.c b/fs/fs.c
index 8417067..3b5f284 100644
--- a/fs/fs.c
+++ b/fs/fs.c
@@ -229,6 +229,16 @@ static void put_file(FILE *f)
 	files[f->no].in_use = 0;
 }
 
+static int check_fd(int fd)
+{
+	if (fd < 0 || fd >= MAX_FILES || !files[fd].in_use) {
+		errno = -EBADF;
+		return errno;
+	}
+
+	return 0;
+}
+
 static struct device_d *get_fs_device_by_path(char **path)
 {
 	struct device_d *dev;
@@ -457,6 +467,9 @@ int ioctl(int fd, int request, void *buf)
 	struct fs_driver_d *fsdrv;
 	FILE *f = &files[fd];
 
+	if (check_fd(fd))
+		return errno;
+
 	dev = f->dev;
 
 	fsdrv = (struct fs_driver_d *)dev->driver->type_data;
@@ -474,6 +487,9 @@ int read(int fd, void *buf, size_t count)
 	struct fs_driver_d *fsdrv;
 	FILE *f = &files[fd];
 
+	if (check_fd(fd))
+		return errno;
+
 	dev = f->dev;
 
 	fsdrv = (struct fs_driver_d *)dev->driver->type_data;
@@ -494,6 +510,9 @@ ssize_t write(int fd, const void *buf, size_t count)
 	struct fs_driver_d *fsdrv;
 	FILE *f = &files[fd];
 
+	if (check_fd(fd))
+		return errno;
+
 	dev = f->dev;
 
 	fsdrv = (struct fs_driver_d *)dev->driver->type_data;
@@ -524,6 +543,9 @@ off_t lseek(int fildes, off_t offset, int whence)
 	FILE *f = &files[fildes];
 	off_t pos;
 
+	if (check_fd(fildes))
+		return -1;
+
 	errno = 0;
 
 	dev = f->dev;
@@ -567,6 +589,9 @@ int erase(int fd, size_t count, unsigned long offset)
 	struct fs_driver_d *fsdrv;
 	FILE *f = &files[fd];
 
+	if (check_fd(fd))
+		return errno;
+
 	dev = f->dev;
 
 	fsdrv = (struct fs_driver_d *)dev->driver->type_data;
@@ -589,6 +614,9 @@ int protect(int fd, size_t count, unsigned long offset, int prot)
 	struct fs_driver_d *fsdrv;
 	FILE *f = &files[fd];
 
+	if (check_fd(fd))
+		return errno;
+
 	dev = f->dev;
 
 	fsdrv = (struct fs_driver_d *)dev->driver->type_data;
@@ -627,6 +655,9 @@ void *memmap(int fd, int flags)
 	FILE *f = &files[fd];
 	void *ret = (void *)-1;
 
+	if (check_fd(fd))
+		return ret;
+
 	dev = f->dev;
 
 	fsdrv = (struct fs_driver_d *)dev->driver->type_data;
@@ -646,6 +677,9 @@ int close(int fd)
 	struct fs_driver_d *fsdrv;
 	FILE *f = &files[fd];
 
+	if (check_fd(fd))
+		return errno;
+
 	dev = f->dev;
 
 	fsdrv = (struct fs_driver_d *)dev->driver->type_data;
-- 
1.7.1


_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCHv2] fs: add basic sanity check before accessing the files array
  2010-07-28  5:27   ` [PATCHv2] " Baruch Siach
@ 2010-07-28  6:22     ` Sascha Hauer
  0 siblings, 0 replies; 5+ messages in thread
From: Sascha Hauer @ 2010-07-28  6:22 UTC (permalink / raw)
  To: Baruch Siach; +Cc: barebox

On Wed, Jul 28, 2010 at 08:27:50AM +0300, Baruch Siach wrote:
> This patch adds some basic file descriptor sanity checks to the file access
> routines. Check whether the given file descriptor is in the files array range,
> and whether the file entry is valid.

Ok, applied

Sascha

> 
> Signed-off-by: Baruch Siach <baruch@tkos.co.il>
> ---
>  fs/fs.c |   34 ++++++++++++++++++++++++++++++++++
>  1 files changed, 34 insertions(+), 0 deletions(-)
> 
> diff --git a/fs/fs.c b/fs/fs.c
> index 8417067..3b5f284 100644
> --- a/fs/fs.c
> +++ b/fs/fs.c
> @@ -229,6 +229,16 @@ static void put_file(FILE *f)
>  	files[f->no].in_use = 0;
>  }
>  
> +static int check_fd(int fd)
> +{
> +	if (fd < 0 || fd >= MAX_FILES || !files[fd].in_use) {
> +		errno = -EBADF;
> +		return errno;
> +	}
> +
> +	return 0;
> +}
> +
>  static struct device_d *get_fs_device_by_path(char **path)
>  {
>  	struct device_d *dev;
> @@ -457,6 +467,9 @@ int ioctl(int fd, int request, void *buf)
>  	struct fs_driver_d *fsdrv;
>  	FILE *f = &files[fd];
>  
> +	if (check_fd(fd))
> +		return errno;
> +
>  	dev = f->dev;
>  
>  	fsdrv = (struct fs_driver_d *)dev->driver->type_data;
> @@ -474,6 +487,9 @@ int read(int fd, void *buf, size_t count)
>  	struct fs_driver_d *fsdrv;
>  	FILE *f = &files[fd];
>  
> +	if (check_fd(fd))
> +		return errno;
> +
>  	dev = f->dev;
>  
>  	fsdrv = (struct fs_driver_d *)dev->driver->type_data;
> @@ -494,6 +510,9 @@ ssize_t write(int fd, const void *buf, size_t count)
>  	struct fs_driver_d *fsdrv;
>  	FILE *f = &files[fd];
>  
> +	if (check_fd(fd))
> +		return errno;
> +
>  	dev = f->dev;
>  
>  	fsdrv = (struct fs_driver_d *)dev->driver->type_data;
> @@ -524,6 +543,9 @@ off_t lseek(int fildes, off_t offset, int whence)
>  	FILE *f = &files[fildes];
>  	off_t pos;
>  
> +	if (check_fd(fildes))
> +		return -1;
> +
>  	errno = 0;
>  
>  	dev = f->dev;
> @@ -567,6 +589,9 @@ int erase(int fd, size_t count, unsigned long offset)
>  	struct fs_driver_d *fsdrv;
>  	FILE *f = &files[fd];
>  
> +	if (check_fd(fd))
> +		return errno;
> +
>  	dev = f->dev;
>  
>  	fsdrv = (struct fs_driver_d *)dev->driver->type_data;
> @@ -589,6 +614,9 @@ int protect(int fd, size_t count, unsigned long offset, int prot)
>  	struct fs_driver_d *fsdrv;
>  	FILE *f = &files[fd];
>  
> +	if (check_fd(fd))
> +		return errno;
> +
>  	dev = f->dev;
>  
>  	fsdrv = (struct fs_driver_d *)dev->driver->type_data;
> @@ -627,6 +655,9 @@ void *memmap(int fd, int flags)
>  	FILE *f = &files[fd];
>  	void *ret = (void *)-1;
>  
> +	if (check_fd(fd))
> +		return ret;
> +
>  	dev = f->dev;
>  
>  	fsdrv = (struct fs_driver_d *)dev->driver->type_data;
> @@ -646,6 +677,9 @@ int close(int fd)
>  	struct fs_driver_d *fsdrv;
>  	FILE *f = &files[fd];
>  
> +	if (check_fd(fd))
> +		return errno;
> +
>  	dev = f->dev;
>  
>  	fsdrv = (struct fs_driver_d *)dev->driver->type_data;
> -- 
> 1.7.1
> 
> 
> _______________________________________________
> barebox mailing list
> barebox@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/barebox
> 

-- 
Pengutronix e.K.                           |                             |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |

_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2010-07-28  6:22 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-07-27 13:16 [PATCH] fs: add basic sanity check before accessing the files array Baruch Siach
2010-07-27 13:34 ` Jean-Christophe PLAGNIOL-VILLARD
2010-07-27 13:52   ` Baruch Siach
2010-07-28  5:27   ` [PATCHv2] " Baruch Siach
2010-07-28  6:22     ` Sascha Hauer

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox