From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: X-Spam-Status: No, score=-3.0 required=3.0 tests=ALL_TRUSTED,AWL,BAYES_00 shortcircuit=no autolearn=unavailable version=3.3.2 X-Original-To: cmogstored-public@bogomips.org Received: from localhost (dcvr.yhbt.net [127.0.0.1]) by dcvr.yhbt.net (Postfix) with ESMTP id 777DF1F81A for ; Mon, 17 Aug 2015 06:02:54 +0000 (UTC) From: Eric Wong To: cmogstored-public@bogomips.org Subject: [PATCH] dev.c: fail gracefully on out-of-memory errors Date: Mon, 17 Aug 2015 06:00:30 +0000 Message-Id: <1439791230-21138-1-git-send-email-e@80x24.org> List-Id: The rest of cmogstored shall be updated to fail gracefully on OOM in due time. It may take a while, since not many systems encounter this, but we shall become more robust as time goes on. --- dev.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/dev.c b/dev.c index cd14db9..5b3888b 100644 --- a/dev.c +++ b/dev.c @@ -169,8 +169,17 @@ int mog_dev_mkusage(const struct mog_dev *dev, struct mog_svc *svc) if (!svc->mgmt_mfd) return 0; - usage_path = xasprintf("/dev%u/usage", (unsigned)dev->devid); - tmp_path = xasprintf("%s.%x", usage_path, (unsigned)getpid()); + if (asprintf(&usage_path, "/dev%u/usage", (unsigned)dev->devid) < 0) { + syslog(LOG_ERR, "error generating path: /dev%u/usage (%m)", + (unsigned)dev->devid); + return 0; + } + if (asprintf(&tmp_path, "%s.%x", usage_path, (unsigned)getpid()) < 0) { + syslog(LOG_ERR, "error generating path: /dev%u/usage.%u (%m)", + (unsigned)dev->devid, (unsigned)getpid()); + free(usage_path); + return 0; + } if (mog_unlink(svc, tmp_path) < 0 && errno != ENOENT) goto out; -- EW