aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJulia Lawall <Julia.Lawall@lip6.fr>2014-06-04 05:07:54 -0400
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2014-06-18 18:23:05 -0400
commitcc0be81f00472d782804293766ddd9d1c2b4ebd1 (patch)
treea7db573768301109dc3f49123f34416c21b432ea
parentcee49b3cfb4be8da81b346c9ed405cc5bae056c6 (diff)
staging: tidspbridge: use safer test on the result of find_first_zero_bit
Find_first_zero_bit considers BITS_PER_LONG bits at a time, and thus may return a larger number than the maximum position argument if that position is not a multiple of BITS_PER_LONG. The semantic match that finds this problem is as follows: (http://coccinelle.lip6.fr/) // <smpl> @@ expression e1,e2,e3; statement S1,S2; @@ e1 = find_first_zero_bit(e2,e3) ... if (e1 - == + >= e3) S1 else S2 // </smpl> Signed-off-by: Julia Lawall <Julia.Lawall@lip6.fr> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r--drivers/staging/tidspbridge/rmgr/node.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/staging/tidspbridge/rmgr/node.c b/drivers/staging/tidspbridge/rmgr/node.c
index 9d3044a384ee..305f3a60db71 100644
--- a/drivers/staging/tidspbridge/rmgr/node.c
+++ b/drivers/staging/tidspbridge/rmgr/node.c
@@ -935,7 +935,7 @@ int node_connect(struct node_object *node1, u32 stream1,
935 node2_type == NODE_DAISSOCKET)) { 935 node2_type == NODE_DAISSOCKET)) {
936 /* Find available pipe */ 936 /* Find available pipe */
937 pipe_id = find_first_zero_bit(hnode_mgr->pipe_map, MAXPIPES); 937 pipe_id = find_first_zero_bit(hnode_mgr->pipe_map, MAXPIPES);
938 if (pipe_id == MAXPIPES) { 938 if (pipe_id >= MAXPIPES) {
939 status = -ECONNREFUSED; 939 status = -ECONNREFUSED;
940 goto out_unlock; 940 goto out_unlock;
941 } 941 }
@@ -1008,7 +1008,7 @@ int node_connect(struct node_object *node1, u32 stream1,
1008 status = -EINVAL; 1008 status = -EINVAL;
1009 goto out_unlock; 1009 goto out_unlock;
1010 } 1010 }
1011 if (chnl_id == CHNL_MAXCHANNELS) { 1011 if (chnl_id >= CHNL_MAXCHANNELS) {
1012 status = -ECONNREFUSED; 1012 status = -ECONNREFUSED;
1013 goto out_unlock; 1013 goto out_unlock;
1014 } 1014 }