diff mbox

sparse warning in cifsacl.c

Message ID BANLkTinzZeiiOChBDDymhCsuOw57fTP2Ng@mail.gmail.com (mailing list archive)
State New, archived
Headers show

Commit Message

Steve French May 27, 2011, 4:48 a.m. UTC
Shirish - below is a patch to fix a sparse warning in the cifsacl
code.  The change around line 458 is cosmetic (doesn't look like the
original code caused a problem but at least this quiets sparse) but
doesn't sid_authusers have an endian error.   How far back does this
bug go - does it affect much?

 					return -1;

Comments

Shirish Pargaonkar May 27, 2011, 12:27 p.m. UTC | #1
On Thu, May 26, 2011 at 11:48 PM, Steve French <smfrench@gmail.com> wrote:
> Shirish - below is a patch to fix a sparse warning in the cifsacl
> code.  The change around line 458 is cosmetic (doesn't look like the
> original code caused a problem but at least this quiets sparse) but
> doesn't sid_authusers have an endian error.   How far back does this
> bug go - does it affect much?

Yes, sid_authusers have an endian error.

>
> diff --git a/fs/cifs/cifsacl.c b/fs/cifs/cifsacl.c
> index 076b69c..5f02b4e 100644
> --- a/fs/cifs/cifsacl.c
> +++ b/fs/cifs/cifsacl.c
> @@ -38,7 +38,7 @@ static const struct cifs_sid sid_everyone = {
>        1, 1, {0, 0, 0, 0, 0, 1}, {0} };
>  /* security id for Authenticated Users system group */
>  static const struct cifs_sid sid_authusers = {
> -       1, 1, {0, 0, 0, 0, 0, 5}, {11} };

This variable was addedd in commit 2fbc2f1729e785a7b2faf9d8d60926bb1ff62af0

> +       1, 1, {0, 0, 0, 0, 0, 5}, {cpu_to_le32(11)} };
>  /* group users */
>  static const struct cifs_sid sid_user = {1, 2 , {0, 0, 0, 0, 0, 5}, {} };
>
> @@ -458,7 +458,8 @@ int compare_sids(const struct cifs_sid *ctsid,
> const struct cifs_sid *cwsid)
>        if (num_subauth) {
>                for (i = 0; i < num_subauth; ++i) {
>                        if (ctsid->sub_auth[i] != cwsid->sub_auth[i]) {
> -                               if (ctsid->sub_auth[i] > cwsid->sub_auth[i])
> +                               if (le32_to_cpu(ctsid->sub_auth[i]) >
> +                                       le32_to_cpu(cwsid->sub_auth[i]))

This code has been around for quite some time.

>                                        return 1;
>                                else
>                                        return -1;
>
>
> --
> Thanks,
>
> Steve
>
--
To unsubscribe from this list: send the line "unsubscribe linux-cifs" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Jeff Layton May 27, 2011, 7:44 p.m. UTC | #2
On Thu, 26 May 2011 23:48:45 -0500
Steve French <smfrench@gmail.com> wrote:

> Shirish - below is a patch to fix a sparse warning in the cifsacl
> code.  The change around line 458 is cosmetic (doesn't look like the
> original code caused a problem but at least this quiets sparse) but
> doesn't sid_authusers have an endian error.   How far back does this
> bug go - does it affect much?
> 
> diff --git a/fs/cifs/cifsacl.c b/fs/cifs/cifsacl.c
> index 076b69c..5f02b4e 100644
> --- a/fs/cifs/cifsacl.c
> +++ b/fs/cifs/cifsacl.c
> @@ -38,7 +38,7 @@ static const struct cifs_sid sid_everyone = {
>  	1, 1, {0, 0, 0, 0, 0, 1}, {0} };
>  /* security id for Authenticated Users system group */
>  static const struct cifs_sid sid_authusers = {
> -	1, 1, {0, 0, 0, 0, 0, 5}, {11} };
> +	1, 1, {0, 0, 0, 0, 0, 5}, {cpu_to_le32(11)} };
					^^^^^^^^^
This will break on big-endian arches. You need to use
__constant_cpu_to_le32() instead.

>  /* group users */
>  static const struct cifs_sid sid_user = {1, 2 , {0, 0, 0, 0, 0, 5}, {} };
> 
> @@ -458,7 +458,8 @@ int compare_sids(const struct cifs_sid *ctsid,
> const struct cifs_sid *cwsid)
>  	if (num_subauth) {
>  		for (i = 0; i < num_subauth; ++i) {
>  			if (ctsid->sub_auth[i] != cwsid->sub_auth[i]) {
> -				if (ctsid->sub_auth[i] > cwsid->sub_auth[i])
> +				if (le32_to_cpu(ctsid->sub_auth[i]) >
> +					le32_to_cpu(cwsid->sub_auth[i]))
>  					return 1;
>  				else
>  					return -1;
> 
>
diff mbox

Patch

diff --git a/fs/cifs/cifsacl.c b/fs/cifs/cifsacl.c
index 076b69c..5f02b4e 100644
--- a/fs/cifs/cifsacl.c
+++ b/fs/cifs/cifsacl.c
@@ -38,7 +38,7 @@  static const struct cifs_sid sid_everyone = {
 	1, 1, {0, 0, 0, 0, 0, 1}, {0} };
 /* security id for Authenticated Users system group */
 static const struct cifs_sid sid_authusers = {
-	1, 1, {0, 0, 0, 0, 0, 5}, {11} };
+	1, 1, {0, 0, 0, 0, 0, 5}, {cpu_to_le32(11)} };
 /* group users */
 static const struct cifs_sid sid_user = {1, 2 , {0, 0, 0, 0, 0, 5}, {} };

@@ -458,7 +458,8 @@  int compare_sids(const struct cifs_sid *ctsid,
const struct cifs_sid *cwsid)
 	if (num_subauth) {
 		for (i = 0; i < num_subauth; ++i) {
 			if (ctsid->sub_auth[i] != cwsid->sub_auth[i]) {
-				if (ctsid->sub_auth[i] > cwsid->sub_auth[i])
+				if (le32_to_cpu(ctsid->sub_auth[i]) >
+					le32_to_cpu(cwsid->sub_auth[i]))
 					return 1;
 				else