projects
/
platform
/
adaptation
/
renesas_rcar
/
renesas_kernel.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
tools/usb: remove unneeded 'continue' and simplify condition
[platform/adaptation/renesas_rcar/renesas_kernel.git]
/
kernel
/
res_counter.c
diff --git
a/kernel/res_counter.c
b/kernel/res_counter.c
index
3920d59
..
ff55247
100644
(file)
--- a/
kernel/res_counter.c
+++ b/
kernel/res_counter.c
@@
-86,33
+86,39
@@
int res_counter_charge_nofail(struct res_counter *counter, unsigned long val,
return __res_counter_charge(counter, val, limit_fail_at, true);
}
return __res_counter_charge(counter, val, limit_fail_at, true);
}
-
void
res_counter_uncharge_locked(struct res_counter *counter, unsigned long val)
+
u64
res_counter_uncharge_locked(struct res_counter *counter, unsigned long val)
{
if (WARN_ON(counter->usage < val))
val = counter->usage;
counter->usage -= val;
{
if (WARN_ON(counter->usage < val))
val = counter->usage;
counter->usage -= val;
+ return counter->usage;
}
}
-
void
res_counter_uncharge_until(struct res_counter *counter,
-
struct res_counter *top,
-
unsigned long val)
+
u64
res_counter_uncharge_until(struct res_counter *counter,
+ struct res_counter *top,
+ unsigned long val)
{
unsigned long flags;
struct res_counter *c;
{
unsigned long flags;
struct res_counter *c;
+ u64 ret = 0;
local_irq_save(flags);
for (c = counter; c != top; c = c->parent) {
local_irq_save(flags);
for (c = counter; c != top; c = c->parent) {
+ u64 r;
spin_lock(&c->lock);
spin_lock(&c->lock);
- res_counter_uncharge_locked(c, val);
+ r = res_counter_uncharge_locked(c, val);
+ if (c == counter)
+ ret = r;
spin_unlock(&c->lock);
}
local_irq_restore(flags);
spin_unlock(&c->lock);
}
local_irq_restore(flags);
+ return ret;
}
}
-
void
res_counter_uncharge(struct res_counter *counter, unsigned long val)
+
u64
res_counter_uncharge(struct res_counter *counter, unsigned long val)
{
{
- res_counter_uncharge_until(counter, NULL, val);
+ re
turn re
s_counter_uncharge_until(counter, NULL, val);
}
static inline unsigned long long *
}
static inline unsigned long long *