diff options
| -rw-r--r-- | drivers/char/ipmi/ipmi_ssif.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/drivers/char/ipmi/ipmi_ssif.c b/drivers/char/ipmi/ipmi_ssif.c index f6e378dac5f5..f40e3bd2c69c 100644 --- a/drivers/char/ipmi/ipmi_ssif.c +++ b/drivers/char/ipmi/ipmi_ssif.c | |||
| @@ -468,11 +468,13 @@ static int ipmi_ssif_thread(void *data) | |||
| 468 | int result; | 468 | int result; |
| 469 | 469 | ||
| 470 | /* Wait for something to do */ | 470 | /* Wait for something to do */ |
| 471 | wait_for_completion(&ssif_info->wake_thread); | 471 | result = wait_for_completion_interruptible( |
| 472 | init_completion(&ssif_info->wake_thread); | 472 | &ssif_info->wake_thread); |
| 473 | |||
| 474 | if (ssif_info->stopping) | 473 | if (ssif_info->stopping) |
| 475 | break; | 474 | break; |
| 475 | if (result == -ERESTARTSYS) | ||
| 476 | continue; | ||
| 477 | init_completion(&ssif_info->wake_thread); | ||
| 476 | 478 | ||
| 477 | if (ssif_info->i2c_read_write == I2C_SMBUS_WRITE) { | 479 | if (ssif_info->i2c_read_write == I2C_SMBUS_WRITE) { |
| 478 | result = i2c_smbus_write_block_data( | 480 | result = i2c_smbus_write_block_data( |
