public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH 4/6] udf: fix 3 signedness & 1 unitialized variable warnings
@ 2007-12-16  2:14 Marcin Slusarz
  2007-12-17 16:22 ` Jan Kara
  0 siblings, 1 reply; 2+ messages in thread
From: Marcin Slusarz @ 2007-12-16  2:14 UTC (permalink / raw)
  To: linux-kernel; +Cc: Ben Fennema

sparse generated:
fs/udf/inode.c:324:41: warning: incorrect type in argument 4 (different signedness)
fs/udf/inode.c:324:41:    expected long *<noident>
fs/udf/inode.c:324:41:    got unsigned long *<noident>

inode_getblk always set 4th argument to uint32_t value
3rd parameter of map_bh is sector_t (which is unsigned long or u64)
so convert phys value to sector_t

fs/udf/inode.c:1818:47: warning: incorrect type in argument 3 (different signedness)
fs/udf/inode.c:1818:47:    expected int *<noident>
fs/udf/inode.c:1818:47:    got unsigned int *<noident>
fs/udf/inode.c:1826:46: warning: incorrect type in argument 3 (different signedness)
fs/udf/inode.c:1826:46:    expected int *<noident>
fs/udf/inode.c:1826:46:    got unsigned int *<noident>

udf_get_filelongad and udf_get_shortad are called always for uint32_t
values (struct extent_position->offset), so it's safe to convert offset
parameter to uint32_t

gcc warned:
fs/udf/inode.c: In function 'udf_get_block':
fs/udf/inode.c:299: warning: 'phys' may be used uninitialized in this function
initialize it to 0 (if someday someone will break inode_getblk we will catch it immediately)

Signed-off-by: Marcin Slusarz <marcin.slusarz@gmail.com>
CC: Ben Fennema <bfennema@falcon.csc.calpoly.edu>
---
 fs/udf/directory.c |    8 ++++----
 fs/udf/inode.c     |    6 +++---
 fs/udf/udfdecl.h   |    4 ++--
 3 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/fs/udf/directory.c b/fs/udf/directory.c
index ff8c08f..984e5dc 100644
--- a/fs/udf/directory.c
+++ b/fs/udf/directory.c
@@ -271,7 +271,7 @@ static extent_ad *udf_get_fileextent(void *buffer, int bufsize, int *offset)
 }
 #endif

-short_ad *udf_get_fileshortad(uint8_t *ptr, int maxoffset, int *offset,
+short_ad *udf_get_fileshortad(uint8_t *ptr, int maxoffset, uint32_t *offset,
 			      int inc)
 {
 	short_ad *sa;
@@ -281,7 +281,7 @@ short_ad *udf_get_fileshortad(uint8_t *ptr, int maxoffset, int *offset,
 		return NULL;
 	}

-	if ((*offset < 0) || ((*offset + sizeof(short_ad)) > maxoffset))
+	if ((*offset + sizeof(short_ad)) > maxoffset)
 		return NULL;
 	else if ((sa = (short_ad *)ptr)->extLength == 0)
 		return NULL;
@@ -291,7 +291,7 @@ short_ad *udf_get_fileshortad(uint8_t *ptr, int maxoffset, int *offset,
 	return sa;
 }

-long_ad *udf_get_filelongad(uint8_t *ptr, int maxoffset, int *offset, int inc)
+long_ad *udf_get_filelongad(uint8_t *ptr, int maxoffset, uint32_t *offset, int inc)
 {
 	long_ad *la;

@@ -300,7 +300,7 @@ long_ad *udf_get_filelongad(uint8_t *ptr, int maxoffset, int *offset, int inc)
 		return NULL;
 	}

-	if ((*offset < 0) || ((*offset + sizeof(long_ad)) > maxoffset))
+	if ((*offset + sizeof(long_ad)) > maxoffset)
 		return NULL;
 	else if ((la = (long_ad *)ptr)->extLength == 0)
 		return NULL;
diff --git a/fs/udf/inode.c b/fs/udf/inode.c
index 6ff8151..1178ae0 100644
--- a/fs/udf/inode.c
+++ b/fs/udf/inode.c
@@ -51,7 +51,7 @@ static int udf_update_inode(struct inode *, int);
 static void udf_fill_inode(struct inode *, struct buffer_head *);
 static int udf_alloc_i_data(struct inode *inode, size_t size);
 static struct buffer_head *inode_getblk(struct inode *, sector_t, int *,
-					long *, int *);
+					sector_t *, int *);
 static int8_t udf_insert_aext(struct inode *, struct extent_position,
 			      kernel_lb_addr, uint32_t);
 static void udf_split_extents(struct inode *, int *, int, int,
@@ -296,7 +296,7 @@ static int udf_get_block(struct inode *inode, sector_t block,
 {
 	int err, new;
 	struct buffer_head *bh;
-	unsigned long phys;
+	sector_t phys = 0;

 	if (!create) {
 		phys = udf_block_map(inode, block);
@@ -469,7 +469,7 @@ out:
 }

 static struct buffer_head *inode_getblk(struct inode *inode, sector_t block,
-					int *err, long *phys, int *new)
+					int *err, sector_t *phys, int *new)
 {
 	static sector_t last_block;
 	struct buffer_head *result = NULL;
diff --git a/fs/udf/udfdecl.h b/fs/udf/udfdecl.h
index c8016cc..b17ca67 100644
--- a/fs/udf/udfdecl.h
+++ b/fs/udf/udfdecl.h
@@ -185,8 +185,8 @@ extern struct fileIdentDesc *udf_fileident_read(struct inode *, loff_t *,
 						sector_t *);
 extern struct fileIdentDesc *udf_get_fileident(void *buffer, int bufsize,
 					       int *offset);
-extern long_ad *udf_get_filelongad(uint8_t *, int, int *, int);
-extern short_ad *udf_get_fileshortad(uint8_t *, int, int *, int);
+extern long_ad *udf_get_filelongad(uint8_t *, int, uint32_t *, int);
+extern short_ad *udf_get_fileshortad(uint8_t *, int, uint32_t *, int);

 /* crc.c */
 extern uint16_t udf_crc(uint8_t *, uint32_t, uint16_t);
--
1.5.3.4


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

* Re: [PATCH 4/6] udf: fix 3 signedness & 1 unitialized variable warnings
  2007-12-16  2:14 [PATCH 4/6] udf: fix 3 signedness & 1 unitialized variable warnings Marcin Slusarz
@ 2007-12-17 16:22 ` Jan Kara
  0 siblings, 0 replies; 2+ messages in thread
From: Jan Kara @ 2007-12-17 16:22 UTC (permalink / raw)
  To: Marcin Slusarz; +Cc: linux-kernel, Ben Fennema, akpm

> sparse generated:
> fs/udf/inode.c:324:41: warning: incorrect type in argument 4 (different signedness)
> fs/udf/inode.c:324:41:    expected long *<noident>
> fs/udf/inode.c:324:41:    got unsigned long *<noident>
> 
> inode_getblk always set 4th argument to uint32_t value
> 3rd parameter of map_bh is sector_t (which is unsigned long or u64)
> so convert phys value to sector_t
> 
> fs/udf/inode.c:1818:47: warning: incorrect type in argument 3 (different signedness)
> fs/udf/inode.c:1818:47:    expected int *<noident>
> fs/udf/inode.c:1818:47:    got unsigned int *<noident>
> fs/udf/inode.c:1826:46: warning: incorrect type in argument 3 (different signedness)
> fs/udf/inode.c:1826:46:    expected int *<noident>
> fs/udf/inode.c:1826:46:    got unsigned int *<noident>
> 
> udf_get_filelongad and udf_get_shortad are called always for uint32_t
> values (struct extent_position->offset), so it's safe to convert offset
> parameter to uint32_t
> 
> gcc warned:
> fs/udf/inode.c: In function 'udf_get_block':
> fs/udf/inode.c:299: warning: 'phys' may be used uninitialized in this function
> initialize it to 0 (if someday someone will break inode_getblk we will catch it immediately)
> 
> Signed-off-by: Marcin Slusarz <marcin.slusarz@gmail.com>
> CC: Ben Fennema <bfennema@falcon.csc.calpoly.edu>
  Acked-by: Jan Kara <jack@suse.cz>

										Honza
> ---
>  fs/udf/directory.c |    8 ++++----
>  fs/udf/inode.c     |    6 +++---
>  fs/udf/udfdecl.h   |    4 ++--
>  3 files changed, 9 insertions(+), 9 deletions(-)
> 
> diff --git a/fs/udf/directory.c b/fs/udf/directory.c
> index ff8c08f..984e5dc 100644
> --- a/fs/udf/directory.c
> +++ b/fs/udf/directory.c
> @@ -271,7 +271,7 @@ static extent_ad *udf_get_fileextent(void *buffer, int bufsize, int *offset)
>  }
>  #endif
> 
> -short_ad *udf_get_fileshortad(uint8_t *ptr, int maxoffset, int *offset,
> +short_ad *udf_get_fileshortad(uint8_t *ptr, int maxoffset, uint32_t *offset,
>  			      int inc)
>  {
>  	short_ad *sa;
> @@ -281,7 +281,7 @@ short_ad *udf_get_fileshortad(uint8_t *ptr, int maxoffset, int *offset,
>  		return NULL;
>  	}
> 
> -	if ((*offset < 0) || ((*offset + sizeof(short_ad)) > maxoffset))
> +	if ((*offset + sizeof(short_ad)) > maxoffset)
>  		return NULL;
>  	else if ((sa = (short_ad *)ptr)->extLength == 0)
>  		return NULL;
> @@ -291,7 +291,7 @@ short_ad *udf_get_fileshortad(uint8_t *ptr, int maxoffset, int *offset,
>  	return sa;
>  }
> 
> -long_ad *udf_get_filelongad(uint8_t *ptr, int maxoffset, int *offset, int inc)
> +long_ad *udf_get_filelongad(uint8_t *ptr, int maxoffset, uint32_t *offset, int inc)
>  {
>  	long_ad *la;
> 
> @@ -300,7 +300,7 @@ long_ad *udf_get_filelongad(uint8_t *ptr, int maxoffset, int *offset, int inc)
>  		return NULL;
>  	}
> 
> -	if ((*offset < 0) || ((*offset + sizeof(long_ad)) > maxoffset))
> +	if ((*offset + sizeof(long_ad)) > maxoffset)
>  		return NULL;
>  	else if ((la = (long_ad *)ptr)->extLength == 0)
>  		return NULL;
> diff --git a/fs/udf/inode.c b/fs/udf/inode.c
> index 6ff8151..1178ae0 100644
> --- a/fs/udf/inode.c
> +++ b/fs/udf/inode.c
> @@ -51,7 +51,7 @@ static int udf_update_inode(struct inode *, int);
>  static void udf_fill_inode(struct inode *, struct buffer_head *);
>  static int udf_alloc_i_data(struct inode *inode, size_t size);
>  static struct buffer_head *inode_getblk(struct inode *, sector_t, int *,
> -					long *, int *);
> +					sector_t *, int *);
>  static int8_t udf_insert_aext(struct inode *, struct extent_position,
>  			      kernel_lb_addr, uint32_t);
>  static void udf_split_extents(struct inode *, int *, int, int,
> @@ -296,7 +296,7 @@ static int udf_get_block(struct inode *inode, sector_t block,
>  {
>  	int err, new;
>  	struct buffer_head *bh;
> -	unsigned long phys;
> +	sector_t phys = 0;
> 
>  	if (!create) {
>  		phys = udf_block_map(inode, block);
> @@ -469,7 +469,7 @@ out:
>  }
> 
>  static struct buffer_head *inode_getblk(struct inode *inode, sector_t block,
> -					int *err, long *phys, int *new)
> +					int *err, sector_t *phys, int *new)
>  {
>  	static sector_t last_block;
>  	struct buffer_head *result = NULL;
> diff --git a/fs/udf/udfdecl.h b/fs/udf/udfdecl.h
> index c8016cc..b17ca67 100644
> --- a/fs/udf/udfdecl.h
> +++ b/fs/udf/udfdecl.h
> @@ -185,8 +185,8 @@ extern struct fileIdentDesc *udf_fileident_read(struct inode *, loff_t *,
>  						sector_t *);
>  extern struct fileIdentDesc *udf_get_fileident(void *buffer, int bufsize,
>  					       int *offset);
> -extern long_ad *udf_get_filelongad(uint8_t *, int, int *, int);
> -extern short_ad *udf_get_fileshortad(uint8_t *, int, int *, int);
> +extern long_ad *udf_get_filelongad(uint8_t *, int, uint32_t *, int);
> +extern short_ad *udf_get_fileshortad(uint8_t *, int, uint32_t *, int);
> 
>  /* crc.c */
>  extern uint16_t udf_crc(uint8_t *, uint32_t, uint16_t);
> --
> 1.5.3.4
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/
-- 
Jan Kara <jack@suse.cz>
SuSE CR Labs

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

end of thread, other threads:[~2007-12-17 16:22 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-12-16  2:14 [PATCH 4/6] udf: fix 3 signedness & 1 unitialized variable warnings Marcin Slusarz
2007-12-17 16:22 ` Jan Kara

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