If bluetoothd crashes the exit routine of the suspend plugin will not be executed, leaving the suspend FIFO behind and preventing the plugin load on subsequent executions. This commit checks for pre-existence of the suspend FIFO and tries to remove and re-create it. --- profiles/input/suspend-dummy.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/profiles/input/suspend-dummy.c b/profiles/input/suspend-dummy.c index 33b790a..43384c0 100644 --- a/profiles/input/suspend-dummy.c +++ b/profiles/input/suspend-dummy.c @@ -119,6 +119,22 @@ int suspend_init(suspend_event suspend, resume_event resume) if (mkfifo(HOG_SUSPEND_FIFO, S_IRWXU) < 0) { int err = -errno; + + if (err == -EEXIST) { + DBG("FIFO (%s) already exists, trying to remove", + HOG_SUSPEND_FIFO); + + /* remove pre-existing FIFO and retry */ + if (remove(HOG_SUSPEND_FIFO) < 0) { + err = -errno; + error("Failed to remove FIFO (%s): %s (%d)", + HOG_SUSPEND_FIFO, strerror(-err), -err); + return err; + } + + return suspend_init(suspend, resume); + } + error("Can't create FIFO (%s): %s (%d)", HOG_SUSPEND_FIFO, strerror(-err), -err); return err; -- 1.7.11.7 -- To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html