|
@@ -473,11 +473,8 @@ void wb_congested_put(struct bdi_writeback_congested *congested)
|
|
|
{
|
|
{
|
|
|
unsigned long flags;
|
|
unsigned long flags;
|
|
|
|
|
|
|
|
- local_irq_save(flags);
|
|
|
|
|
- if (!refcount_dec_and_lock(&congested->refcnt, &cgwb_lock)) {
|
|
|
|
|
- local_irq_restore(flags);
|
|
|
|
|
|
|
+ if (!refcount_dec_and_lock_irqsave(&congested->refcnt, &cgwb_lock, &flags))
|
|
|
return;
|
|
return;
|
|
|
- }
|
|
|
|
|
|
|
|
|
|
/* bdi might already have been destroyed leaving @congested unlinked */
|
|
/* bdi might already have been destroyed leaving @congested unlinked */
|
|
|
if (congested->__bdi) {
|
|
if (congested->__bdi) {
|