From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from birdy.pmhahn.de (birdy.pmhahn.de [88.198.22.186]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 909694921AD for ; Tue, 12 May 2026 08:28:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=88.198.22.186 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778574533; cv=none; b=Scbw9V4K/+rk+DGGSABbBkYN7GXHmUXRSXTIGTtEslcWzfqFyhN7Gh+CwIaPSGuKXYzwYfsWRUrjx7j/6++mAr/7vf+tImc5HwPPGjSsHpEnunz6x9c00BDiTflsXfy+x0E476OIakY4ncsd7CFbZ9dGlzG+1wdIZu0IKmwpsbg= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778574533; c=relaxed/simple; bh=DPWDM7zmq8ugNSTz4/YsYQQYE7XKQ0JPeoHbzgRM/G8=; h=Date:From:To:Subject:Message-ID:MIME-Version:Content-Type: Content-Disposition; b=ALLXCnZ/9dMZ8mic78C1PM5GLBMLLU8dIvnrLJ5dCJDiZKkEaBidEwytb891qDgBtubtpGjpijP44UHn9NnjdlHp0Ku1QkdaVmygmaRNDt8MyMJrb5fqcXhSq9wpjIslKt/P9i3+sz/HL2fOFBbAqjo7W+u4yKDEqdTu3w/aZsY= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=pmhahn.de; spf=pass smtp.mailfrom=pmhahn.de; dkim=fail (2048-bit key) header.d=pmhahn.de header.i=@pmhahn.de header.b=n/3xD7gN reason="signature verification failed"; arc=none smtp.client-ip=88.198.22.186 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=pmhahn.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=pmhahn.de Authentication-Results: smtp.subspace.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=pmhahn.de header.i=@pmhahn.de header.b="n/3xD7gN" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=pmhahn.de; s=202501; t=1778574013; bh=DPWDM7zmq8ugNSTz4/YsYQQYE7XKQ0JPeoHbzgRM/G8=; h=Date:From:To:Subject:From; b=n/3xD7gNJ9IuN9//cAuK+fjc8CnolcJ7Bb+pVzsTJNwH8pUqy2tr6FJyDMcOrBabG Eyd/3Ca+YyzK6wUFy6ukMBxd5/fBT6O1qfODCTgIFn5PHf4ktWTtgSd1b43wrB6ip+ iCwFij7ThCd6FvS93V26sAwHLbnNDAwWrNMnvRt2ngZMcSHnQJRXXwSvzGMAB5aqjM GZLbxX40OtCLBH9CC7JQu25YfigZJ9+a0MjNY9dwPyKANTXnAdoNGMDqBbfxBy92vl 1kZPEvjEdvoGL6ysyZJOHDltW6hIYCYLj3tiRmpaR8oSiN19yvKgqjOswwjTYw7ZmX MFiFF/WpFiUrg== Received: from birdy.pmhahn.de (p200300e277368f00518b7ab65048c7e1.dip0.t-ipconnect.de [IPv6:2003:e2:7736:8f00:518b:7ab6:5048:c7e1]) by birdy.pmhahn.de (Postfix) with ESMTPSA id 6C6B42204A60 for ; Tue, 12 May 2026 10:20:13 +0200 (CEST) Date: Tue, 12 May 2026 10:20:12 +0200 From: Philipp Matthias Hahn To: Kernel Mailing List Subject: Proper error-handling of cdev_add() after cdev_alloc() ? Message-ID: Mail-Followup-To: Kernel Mailing List Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Hello, How should errors of `cdev_add()` after `cdev_alloc()` be handled? The basic schema seems to be like this: cdev = cdev_alloc(); if (!cdev) return -ENOMEM; ... ret = cdev_add(cdev, ...); if (ret < 0) { /* WHAT HERE ??? */ return ret; } ... return 0; // success I found 5 case of how errors are handled: 1. kfree(cdev); drivers/media/v4l2-core/v4l2-dev.c:1060 2. kobject_put(&cdev->kobj); drivers/char/xillybus/xillybus_class.c:107 fs/char_dev.c:293 drivers/s390/char/vmlogrdr.c:780 drivers/tty/tty_io.c:3171 drivers/uio/uio.c:925 3. cdev_del(cdev); drivers/char/virtio_console.c:1435 fs/fuse/cuse.c:419 drivers/misc/mei/main.c:1318 drivers/s390/char/tape_class.c:92 drivers/s390/char/vmur.c:928 drivers/scsi/sg.c:1560 drivers/scsi/st.c:4307 drivers/staging/vme_user/vme_user.c:694 4. No error handling at all. arch/sh/boards/mach-landisk/gio.c:145 5. panic() Currently I'm unsure of what's the correct way. My current understanding is, that `cdev_del()` should only be called if `cdev_add()` succeeded, so those 8 findings above should be fixed. But to what? Thank you in advance Philipp