diff options
| -rw-r--r-- | arch/m68k/include/asm/m528xsim.h | 2 | ||||
| -rw-r--r-- | arch/m68k/kernel/ptrace.c | 2 | ||||
| -rw-r--r-- | arch/m68k/kernel/time.c | 4 | ||||
| -rw-r--r-- | arch/m68k/platform/68328/timers.c | 6 | ||||
| -rw-r--r-- | arch/m68k/platform/68360/config.c | 7 | ||||
| -rw-r--r-- | arch/x86/crypto/aesni-intel_asm.S | 6 | ||||
| -rw-r--r-- | drivers/base/regmap/regmap.c | 10 | ||||
| -rw-r--r-- | drivers/char/hw_random/atmel-rng.c | 7 | ||||
| -rw-r--r-- | drivers/regulator/anatop-regulator.c | 2 | ||||
| -rw-r--r-- | drivers/regulator/core.c | 3 | ||||
| -rw-r--r-- | drivers/regulator/gpio-regulator.c | 16 | ||||
| -rw-r--r-- | drivers/regulator/max8649.c | 1 | ||||
| -rw-r--r-- | drivers/regulator/palmas-regulator.c | 7 | ||||
| -rw-r--r-- | fs/exofs/sys.c | 2 | ||||
| -rw-r--r-- | fs/fs-writeback.c | 1 |
15 files changed, 47 insertions, 29 deletions
diff --git a/arch/m68k/include/asm/m528xsim.h b/arch/m68k/include/asm/m528xsim.h index d63b99ff7ff7..497c31c803ff 100644 --- a/arch/m68k/include/asm/m528xsim.h +++ b/arch/m68k/include/asm/m528xsim.h | |||
| @@ -86,7 +86,7 @@ | |||
| 86 | /* | 86 | /* |
| 87 | * QSPI module. | 87 | * QSPI module. |
| 88 | */ | 88 | */ |
| 89 | #define MCFQSPI_IOBASE (MCF_IPSBAR + 0x340) | 89 | #define MCFQSPI_BASE (MCF_IPSBAR + 0x340) |
| 90 | #define MCFQSPI_SIZE 0x40 | 90 | #define MCFQSPI_SIZE 0x40 |
| 91 | 91 | ||
| 92 | #define MCFQSPI_CS0 147 | 92 | #define MCFQSPI_CS0 147 |
diff --git a/arch/m68k/kernel/ptrace.c b/arch/m68k/kernel/ptrace.c index 8b4a2222e658..1bc10e62b9af 100644 --- a/arch/m68k/kernel/ptrace.c +++ b/arch/m68k/kernel/ptrace.c | |||
| @@ -286,7 +286,7 @@ asmlinkage void syscall_trace(void) | |||
| 286 | } | 286 | } |
| 287 | } | 287 | } |
| 288 | 288 | ||
| 289 | #ifdef CONFIG_COLDFIRE | 289 | #if defined(CONFIG_COLDFIRE) || !defined(CONFIG_MMU) |
| 290 | asmlinkage int syscall_trace_enter(void) | 290 | asmlinkage int syscall_trace_enter(void) |
| 291 | { | 291 | { |
| 292 | int ret = 0; | 292 | int ret = 0; |
diff --git a/arch/m68k/kernel/time.c b/arch/m68k/kernel/time.c index d7deb7fc7eb5..707f0573ec6b 100644 --- a/arch/m68k/kernel/time.c +++ b/arch/m68k/kernel/time.c | |||
| @@ -85,7 +85,7 @@ void __init time_init(void) | |||
| 85 | mach_sched_init(timer_interrupt); | 85 | mach_sched_init(timer_interrupt); |
| 86 | } | 86 | } |
| 87 | 87 | ||
| 88 | #ifdef CONFIG_M68KCLASSIC | 88 | #ifdef CONFIG_ARCH_USES_GETTIMEOFFSET |
| 89 | 89 | ||
| 90 | u32 arch_gettimeoffset(void) | 90 | u32 arch_gettimeoffset(void) |
| 91 | { | 91 | { |
| @@ -108,4 +108,4 @@ static int __init rtc_init(void) | |||
| 108 | 108 | ||
| 109 | module_init(rtc_init); | 109 | module_init(rtc_init); |
| 110 | 110 | ||
| 111 | #endif /* CONFIG_M68KCLASSIC */ | 111 | #endif /* CONFIG_ARCH_USES_GETTIMEOFFSET */ |
diff --git a/arch/m68k/platform/68328/timers.c b/arch/m68k/platform/68328/timers.c index c801c172b822..f4dc9b295609 100644 --- a/arch/m68k/platform/68328/timers.c +++ b/arch/m68k/platform/68328/timers.c | |||
| @@ -53,6 +53,7 @@ | |||
| 53 | #endif | 53 | #endif |
| 54 | 54 | ||
| 55 | static u32 m68328_tick_cnt; | 55 | static u32 m68328_tick_cnt; |
| 56 | static irq_handler_t timer_interrupt; | ||
| 56 | 57 | ||
| 57 | /***************************************************************************/ | 58 | /***************************************************************************/ |
| 58 | 59 | ||
| @@ -62,7 +63,7 @@ static irqreturn_t hw_tick(int irq, void *dummy) | |||
| 62 | TSTAT &= 0; | 63 | TSTAT &= 0; |
| 63 | 64 | ||
| 64 | m68328_tick_cnt += TICKS_PER_JIFFY; | 65 | m68328_tick_cnt += TICKS_PER_JIFFY; |
| 65 | return arch_timer_interrupt(irq, dummy); | 66 | return timer_interrupt(irq, dummy); |
| 66 | } | 67 | } |
| 67 | 68 | ||
| 68 | /***************************************************************************/ | 69 | /***************************************************************************/ |
| @@ -99,7 +100,7 @@ static struct clocksource m68328_clk = { | |||
| 99 | 100 | ||
| 100 | /***************************************************************************/ | 101 | /***************************************************************************/ |
| 101 | 102 | ||
| 102 | void hw_timer_init(void) | 103 | void hw_timer_init(irq_handler_t handler) |
| 103 | { | 104 | { |
| 104 | /* disable timer 1 */ | 105 | /* disable timer 1 */ |
| 105 | TCTL = 0; | 106 | TCTL = 0; |
| @@ -115,6 +116,7 @@ void hw_timer_init(void) | |||
| 115 | /* Enable timer 1 */ | 116 | /* Enable timer 1 */ |
| 116 | TCTL |= TCTL_TEN; | 117 | TCTL |= TCTL_TEN; |
| 117 | clocksource_register_hz(&m68328_clk, TICKS_PER_JIFFY*HZ); | 118 | clocksource_register_hz(&m68328_clk, TICKS_PER_JIFFY*HZ); |
| 119 | timer_interrupt = handler; | ||
| 118 | } | 120 | } |
| 119 | 121 | ||
| 120 | /***************************************************************************/ | 122 | /***************************************************************************/ |
diff --git a/arch/m68k/platform/68360/config.c b/arch/m68k/platform/68360/config.c index 255fc03913e9..9877cefad1e7 100644 --- a/arch/m68k/platform/68360/config.c +++ b/arch/m68k/platform/68360/config.c | |||
| @@ -35,6 +35,7 @@ extern void m360_cpm_reset(void); | |||
| 35 | #define OSCILLATOR (unsigned long int)33000000 | 35 | #define OSCILLATOR (unsigned long int)33000000 |
| 36 | #endif | 36 | #endif |
| 37 | 37 | ||
| 38 | static irq_handler_t timer_interrupt; | ||
| 38 | unsigned long int system_clock; | 39 | unsigned long int system_clock; |
| 39 | 40 | ||
| 40 | extern QUICC *pquicc; | 41 | extern QUICC *pquicc; |
| @@ -52,7 +53,7 @@ static irqreturn_t hw_tick(int irq, void *dummy) | |||
| 52 | 53 | ||
| 53 | pquicc->timer_ter1 = 0x0002; /* clear timer event */ | 54 | pquicc->timer_ter1 = 0x0002; /* clear timer event */ |
| 54 | 55 | ||
| 55 | return arch_timer_interrupt(irq, dummy); | 56 | return timer_interrupt(irq, dummy); |
| 56 | } | 57 | } |
| 57 | 58 | ||
| 58 | static struct irqaction m68360_timer_irq = { | 59 | static struct irqaction m68360_timer_irq = { |
| @@ -61,7 +62,7 @@ static struct irqaction m68360_timer_irq = { | |||
| 61 | .handler = hw_tick, | 62 | .handler = hw_tick, |
| 62 | }; | 63 | }; |
| 63 | 64 | ||
| 64 | void hw_timer_init(void) | 65 | void hw_timer_init(irq_handler_t handler) |
| 65 | { | 66 | { |
| 66 | unsigned char prescaler; | 67 | unsigned char prescaler; |
| 67 | unsigned short tgcr_save; | 68 | unsigned short tgcr_save; |
| @@ -94,6 +95,8 @@ void hw_timer_init(void) | |||
| 94 | 95 | ||
| 95 | pquicc->timer_ter1 = 0x0003; /* clear timer events */ | 96 | pquicc->timer_ter1 = 0x0003; /* clear timer events */ |
| 96 | 97 | ||
| 98 | timer_interrupt = handler; | ||
| 99 | |||
| 97 | /* enable timer 1 interrupt in CIMR */ | 100 | /* enable timer 1 interrupt in CIMR */ |
| 98 | setup_irq(CPMVEC_TIMER1, &m68360_timer_irq); | 101 | setup_irq(CPMVEC_TIMER1, &m68360_timer_irq); |
| 99 | 102 | ||
diff --git a/arch/x86/crypto/aesni-intel_asm.S b/arch/x86/crypto/aesni-intel_asm.S index be6d9e365a80..3470624d7835 100644 --- a/arch/x86/crypto/aesni-intel_asm.S +++ b/arch/x86/crypto/aesni-intel_asm.S | |||
| @@ -2460,10 +2460,12 @@ ENTRY(aesni_cbc_dec) | |||
| 2460 | pxor IN3, STATE4 | 2460 | pxor IN3, STATE4 |
| 2461 | movaps IN4, IV | 2461 | movaps IN4, IV |
| 2462 | #else | 2462 | #else |
| 2463 | pxor (INP), STATE2 | ||
| 2464 | pxor 0x10(INP), STATE3 | ||
| 2465 | pxor IN1, STATE4 | 2463 | pxor IN1, STATE4 |
| 2466 | movaps IN2, IV | 2464 | movaps IN2, IV |
| 2465 | movups (INP), IN1 | ||
| 2466 | pxor IN1, STATE2 | ||
| 2467 | movups 0x10(INP), IN2 | ||
| 2468 | pxor IN2, STATE3 | ||
| 2467 | #endif | 2469 | #endif |
| 2468 | movups STATE1, (OUTP) | 2470 | movups STATE1, (OUTP) |
| 2469 | movups STATE2, 0x10(OUTP) | 2471 | movups STATE2, 0x10(OUTP) |
diff --git a/drivers/base/regmap/regmap.c b/drivers/base/regmap/regmap.c index 0bcda488f11c..c89aa01fb1de 100644 --- a/drivers/base/regmap/regmap.c +++ b/drivers/base/regmap/regmap.c | |||
| @@ -246,11 +246,11 @@ struct regmap *regmap_init(struct device *dev, | |||
| 246 | map->lock = regmap_lock_mutex; | 246 | map->lock = regmap_lock_mutex; |
| 247 | map->unlock = regmap_unlock_mutex; | 247 | map->unlock = regmap_unlock_mutex; |
| 248 | } | 248 | } |
| 249 | map->format.buf_size = (config->reg_bits + config->val_bits) / 8; | ||
| 250 | map->format.reg_bytes = DIV_ROUND_UP(config->reg_bits, 8); | 249 | map->format.reg_bytes = DIV_ROUND_UP(config->reg_bits, 8); |
| 251 | map->format.pad_bytes = config->pad_bits / 8; | 250 | map->format.pad_bytes = config->pad_bits / 8; |
| 252 | map->format.val_bytes = DIV_ROUND_UP(config->val_bits, 8); | 251 | map->format.val_bytes = DIV_ROUND_UP(config->val_bits, 8); |
| 253 | map->format.buf_size += map->format.pad_bytes; | 252 | map->format.buf_size = DIV_ROUND_UP(config->reg_bits + |
| 253 | config->val_bits + config->pad_bits, 8); | ||
| 254 | map->reg_shift = config->pad_bits % 8; | 254 | map->reg_shift = config->pad_bits % 8; |
| 255 | if (config->reg_stride) | 255 | if (config->reg_stride) |
| 256 | map->reg_stride = config->reg_stride; | 256 | map->reg_stride = config->reg_stride; |
| @@ -368,7 +368,7 @@ struct regmap *regmap_init(struct device *dev, | |||
| 368 | 368 | ||
| 369 | ret = regcache_init(map, config); | 369 | ret = regcache_init(map, config); |
| 370 | if (ret < 0) | 370 | if (ret < 0) |
| 371 | goto err_free_workbuf; | 371 | goto err_debugfs; |
| 372 | 372 | ||
| 373 | /* Add a devres resource for dev_get_regmap() */ | 373 | /* Add a devres resource for dev_get_regmap() */ |
| 374 | m = devres_alloc(dev_get_regmap_release, sizeof(*m), GFP_KERNEL); | 374 | m = devres_alloc(dev_get_regmap_release, sizeof(*m), GFP_KERNEL); |
| @@ -383,7 +383,8 @@ struct regmap *regmap_init(struct device *dev, | |||
| 383 | 383 | ||
| 384 | err_cache: | 384 | err_cache: |
| 385 | regcache_exit(map); | 385 | regcache_exit(map); |
| 386 | err_free_workbuf: | 386 | err_debugfs: |
| 387 | regmap_debugfs_exit(map); | ||
| 387 | kfree(map->work_buf); | 388 | kfree(map->work_buf); |
| 388 | err_map: | 389 | err_map: |
| 389 | kfree(map); | 390 | kfree(map); |
| @@ -471,6 +472,7 @@ int regmap_reinit_cache(struct regmap *map, const struct regmap_config *config) | |||
| 471 | 472 | ||
| 472 | return ret; | 473 | return ret; |
| 473 | } | 474 | } |
| 475 | EXPORT_SYMBOL_GPL(regmap_reinit_cache); | ||
| 474 | 476 | ||
| 475 | /** | 477 | /** |
| 476 | * regmap_exit(): Free a previously allocated register map | 478 | * regmap_exit(): Free a previously allocated register map |
diff --git a/drivers/char/hw_random/atmel-rng.c b/drivers/char/hw_random/atmel-rng.c index f518b99f53f5..6289f0eee24c 100644 --- a/drivers/char/hw_random/atmel-rng.c +++ b/drivers/char/hw_random/atmel-rng.c | |||
| @@ -36,6 +36,13 @@ static int atmel_trng_read(struct hwrng *rng, void *buf, size_t max, | |||
| 36 | /* data ready? */ | 36 | /* data ready? */ |
| 37 | if (readl(trng->base + TRNG_ODATA) & 1) { | 37 | if (readl(trng->base + TRNG_ODATA) & 1) { |
| 38 | *data = readl(trng->base + TRNG_ODATA); | 38 | *data = readl(trng->base + TRNG_ODATA); |
| 39 | /* | ||
| 40 | ensure data ready is only set again AFTER the next data | ||
| 41 | word is ready in case it got set between checking ISR | ||
| 42 | and reading ODATA, so we don't risk re-reading the | ||
| 43 | same word | ||
| 44 | */ | ||
| 45 | readl(trng->base + TRNG_ISR); | ||
| 39 | return 4; | 46 | return 4; |
| 40 | } else | 47 | } else |
| 41 | return 0; | 48 | return 0; |
diff --git a/drivers/regulator/anatop-regulator.c b/drivers/regulator/anatop-regulator.c index 3660bace123c..e82e7eaac0f1 100644 --- a/drivers/regulator/anatop-regulator.c +++ b/drivers/regulator/anatop-regulator.c | |||
| @@ -224,7 +224,7 @@ static struct platform_driver anatop_regulator_driver = { | |||
| 224 | .of_match_table = of_anatop_regulator_match_tbl, | 224 | .of_match_table = of_anatop_regulator_match_tbl, |
| 225 | }, | 225 | }, |
| 226 | .probe = anatop_regulator_probe, | 226 | .probe = anatop_regulator_probe, |
| 227 | .remove = anatop_regulator_remove, | 227 | .remove = __devexit_p(anatop_regulator_remove), |
| 228 | }; | 228 | }; |
| 229 | 229 | ||
| 230 | static int __init anatop_regulator_init(void) | 230 | static int __init anatop_regulator_init(void) |
diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c index 7584a74eec8a..09a737c868b5 100644 --- a/drivers/regulator/core.c +++ b/drivers/regulator/core.c | |||
| @@ -2050,6 +2050,9 @@ int regulator_map_voltage_linear(struct regulator_dev *rdev, | |||
| 2050 | return -EINVAL; | 2050 | return -EINVAL; |
| 2051 | } | 2051 | } |
| 2052 | 2052 | ||
| 2053 | if (min_uV < rdev->desc->min_uV) | ||
| 2054 | min_uV = rdev->desc->min_uV; | ||
| 2055 | |||
| 2053 | ret = DIV_ROUND_UP(min_uV - rdev->desc->min_uV, rdev->desc->uV_step); | 2056 | ret = DIV_ROUND_UP(min_uV - rdev->desc->min_uV, rdev->desc->uV_step); |
| 2054 | if (ret < 0) | 2057 | if (ret < 0) |
| 2055 | return ret; | 2058 | return ret; |
diff --git a/drivers/regulator/gpio-regulator.c b/drivers/regulator/gpio-regulator.c index 9997d7aaca84..242851a4c1a6 100644 --- a/drivers/regulator/gpio-regulator.c +++ b/drivers/regulator/gpio-regulator.c | |||
| @@ -101,16 +101,20 @@ static int gpio_regulator_get_value(struct regulator_dev *dev) | |||
| 101 | } | 101 | } |
| 102 | 102 | ||
| 103 | static int gpio_regulator_set_value(struct regulator_dev *dev, | 103 | static int gpio_regulator_set_value(struct regulator_dev *dev, |
| 104 | int min, int max) | 104 | int min, int max, unsigned *selector) |
| 105 | { | 105 | { |
| 106 | struct gpio_regulator_data *data = rdev_get_drvdata(dev); | 106 | struct gpio_regulator_data *data = rdev_get_drvdata(dev); |
| 107 | int ptr, target, state, best_val = INT_MAX; | 107 | int ptr, target = 0, state, best_val = INT_MAX; |
| 108 | 108 | ||
| 109 | for (ptr = 0; ptr < data->nr_states; ptr++) | 109 | for (ptr = 0; ptr < data->nr_states; ptr++) |
| 110 | if (data->states[ptr].value < best_val && | 110 | if (data->states[ptr].value < best_val && |
| 111 | data->states[ptr].value >= min && | 111 | data->states[ptr].value >= min && |
| 112 | data->states[ptr].value <= max) | 112 | data->states[ptr].value <= max) { |
| 113 | target = data->states[ptr].gpios; | 113 | target = data->states[ptr].gpios; |
| 114 | best_val = data->states[ptr].value; | ||
| 115 | if (selector) | ||
| 116 | *selector = ptr; | ||
| 117 | } | ||
| 114 | 118 | ||
| 115 | if (best_val == INT_MAX) | 119 | if (best_val == INT_MAX) |
| 116 | return -EINVAL; | 120 | return -EINVAL; |
| @@ -128,7 +132,7 @@ static int gpio_regulator_set_voltage(struct regulator_dev *dev, | |||
| 128 | int min_uV, int max_uV, | 132 | int min_uV, int max_uV, |
| 129 | unsigned *selector) | 133 | unsigned *selector) |
| 130 | { | 134 | { |
| 131 | return gpio_regulator_set_value(dev, min_uV, max_uV); | 135 | return gpio_regulator_set_value(dev, min_uV, max_uV, selector); |
| 132 | } | 136 | } |
| 133 | 137 | ||
| 134 | static int gpio_regulator_list_voltage(struct regulator_dev *dev, | 138 | static int gpio_regulator_list_voltage(struct regulator_dev *dev, |
| @@ -145,7 +149,7 @@ static int gpio_regulator_list_voltage(struct regulator_dev *dev, | |||
| 145 | static int gpio_regulator_set_current_limit(struct regulator_dev *dev, | 149 | static int gpio_regulator_set_current_limit(struct regulator_dev *dev, |
| 146 | int min_uA, int max_uA) | 150 | int min_uA, int max_uA) |
| 147 | { | 151 | { |
| 148 | return gpio_regulator_set_value(dev, min_uA, max_uA); | 152 | return gpio_regulator_set_value(dev, min_uA, max_uA, NULL); |
| 149 | } | 153 | } |
| 150 | 154 | ||
| 151 | static struct regulator_ops gpio_regulator_voltage_ops = { | 155 | static struct regulator_ops gpio_regulator_voltage_ops = { |
| @@ -286,7 +290,7 @@ static int __devinit gpio_regulator_probe(struct platform_device *pdev) | |||
| 286 | 290 | ||
| 287 | cfg.dev = &pdev->dev; | 291 | cfg.dev = &pdev->dev; |
| 288 | cfg.init_data = config->init_data; | 292 | cfg.init_data = config->init_data; |
| 289 | cfg.driver_data = &drvdata; | 293 | cfg.driver_data = drvdata; |
| 290 | 294 | ||
| 291 | drvdata->dev = regulator_register(&drvdata->desc, &cfg); | 295 | drvdata->dev = regulator_register(&drvdata->desc, &cfg); |
| 292 | if (IS_ERR(drvdata->dev)) { | 296 | if (IS_ERR(drvdata->dev)) { |
diff --git a/drivers/regulator/max8649.c b/drivers/regulator/max8649.c index 1f4bb80457b3..9d540cd02dab 100644 --- a/drivers/regulator/max8649.c +++ b/drivers/regulator/max8649.c | |||
| @@ -259,6 +259,7 @@ static int __devinit max8649_regulator_probe(struct i2c_client *client, | |||
| 259 | config.dev = &client->dev; | 259 | config.dev = &client->dev; |
| 260 | config.init_data = pdata->regulator; | 260 | config.init_data = pdata->regulator; |
| 261 | config.driver_data = info; | 261 | config.driver_data = info; |
| 262 | config.regmap = info->regmap; | ||
| 262 | 263 | ||
| 263 | info->regulator = regulator_register(&dcdc_desc, &config); | 264 | info->regulator = regulator_register(&dcdc_desc, &config); |
| 264 | if (IS_ERR(info->regulator)) { | 265 | if (IS_ERR(info->regulator)) { |
diff --git a/drivers/regulator/palmas-regulator.c b/drivers/regulator/palmas-regulator.c index c4435f608df7..9b7ca90057d5 100644 --- a/drivers/regulator/palmas-regulator.c +++ b/drivers/regulator/palmas-regulator.c | |||
| @@ -775,9 +775,6 @@ static __devinit int palmas_probe(struct platform_device *pdev) | |||
| 775 | err_unregister_regulator: | 775 | err_unregister_regulator: |
| 776 | while (--id >= 0) | 776 | while (--id >= 0) |
| 777 | regulator_unregister(pmic->rdev[id]); | 777 | regulator_unregister(pmic->rdev[id]); |
| 778 | kfree(pmic->rdev); | ||
| 779 | kfree(pmic->desc); | ||
| 780 | kfree(pmic); | ||
| 781 | return ret; | 778 | return ret; |
| 782 | } | 779 | } |
| 783 | 780 | ||
| @@ -788,10 +785,6 @@ static int __devexit palmas_remove(struct platform_device *pdev) | |||
| 788 | 785 | ||
| 789 | for (id = 0; id < PALMAS_NUM_REGS; id++) | 786 | for (id = 0; id < PALMAS_NUM_REGS; id++) |
| 790 | regulator_unregister(pmic->rdev[id]); | 787 | regulator_unregister(pmic->rdev[id]); |
| 791 | |||
| 792 | kfree(pmic->rdev); | ||
| 793 | kfree(pmic->desc); | ||
| 794 | kfree(pmic); | ||
| 795 | return 0; | 788 | return 0; |
| 796 | } | 789 | } |
| 797 | 790 | ||
diff --git a/fs/exofs/sys.c b/fs/exofs/sys.c index e32bc919e4e3..5a7b691e748b 100644 --- a/fs/exofs/sys.c +++ b/fs/exofs/sys.c | |||
| @@ -109,7 +109,7 @@ static struct kobj_type odev_ktype = { | |||
| 109 | static struct kobj_type uuid_ktype = { | 109 | static struct kobj_type uuid_ktype = { |
| 110 | }; | 110 | }; |
| 111 | 111 | ||
| 112 | void exofs_sysfs_dbg_print() | 112 | void exofs_sysfs_dbg_print(void) |
| 113 | { | 113 | { |
| 114 | #ifdef CONFIG_EXOFS_DEBUG | 114 | #ifdef CONFIG_EXOFS_DEBUG |
| 115 | struct kobject *k_name, *k_tmp; | 115 | struct kobject *k_name, *k_tmp; |
diff --git a/fs/fs-writeback.c b/fs/fs-writeback.c index 8d2fb8c88cf3..41a3ccff18d8 100644 --- a/fs/fs-writeback.c +++ b/fs/fs-writeback.c | |||
| @@ -664,6 +664,7 @@ static long writeback_sb_inodes(struct super_block *sb, | |||
| 664 | /* Wait for I_SYNC. This function drops i_lock... */ | 664 | /* Wait for I_SYNC. This function drops i_lock... */ |
| 665 | inode_sleep_on_writeback(inode); | 665 | inode_sleep_on_writeback(inode); |
| 666 | /* Inode may be gone, start again */ | 666 | /* Inode may be gone, start again */ |
| 667 | spin_lock(&wb->list_lock); | ||
| 667 | continue; | 668 | continue; |
| 668 | } | 669 | } |
| 669 | inode->i_state |= I_SYNC; | 670 | inode->i_state |= I_SYNC; |
