projects
/
firefly-linux-kernel-4.4.55.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Input: elantech - fix detection of touchpads where the revision matches a known rate
[firefly-linux-kernel-4.4.55.git]
/
lib
/
idr.c
diff --git
a/lib/idr.c
b/lib/idr.c
index cca4b9302a710c5ef0e1a66355302040ada9d3d7..a3bfde8ad60e24c2e043c358048d18464705f072 100644
(file)
--- a/
lib/idr.c
+++ b/
lib/idr.c
@@
-250,7
+250,7
@@
static int sub_alloc(struct idr *idp, int *starting_id, struct idr_layer **pa,
id = (id | ((1 << (IDR_BITS * l)) - 1)) + 1;
/* if already at the top layer, we need to grow */
id = (id | ((1 << (IDR_BITS * l)) - 1)) + 1;
/* if already at the top layer, we need to grow */
- if (id >
= 1 << (idp->layers * IDR_BITS
)) {
+ if (id >
idr_max(idp->layers
)) {
*starting_id = id;
return -EAGAIN;
}
*starting_id = id;
return -EAGAIN;
}
@@
-829,12
+829,10
@@
void *idr_replace(struct idr *idp, void *ptr, int id)
if (!p)
return ERR_PTR(-EINVAL);
if (!p)
return ERR_PTR(-EINVAL);
- n = (p->layer+1) * IDR_BITS;
-
- if (id >= (1 << n))
+ if (id > idr_max(p->layer + 1))
return ERR_PTR(-EINVAL);
return ERR_PTR(-EINVAL);
- n
-=
IDR_BITS;
+ n
= p->layer *
IDR_BITS;
while ((n > 0) && p) {
p = p->ary[(id >> n) & IDR_MASK];
n -= IDR_BITS;
while ((n > 0) && p) {
p = p->ary[(id >> n) & IDR_MASK];
n -= IDR_BITS;