NetBSD Problem Report #55379

From tsutsui@ceres.dti.ne.jp  Fri Jun 12 18:11:01 2020
Return-Path: <tsutsui@ceres.dti.ne.jp>
Received: from mail.netbsd.org (mail.netbsd.org [199.233.217.200])
	(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
	(Client CN "mail.NetBSD.org", Issuer "mail.NetBSD.org CA" (not verified))
	by mollari.NetBSD.org (Postfix) with ESMTPS id 2840E1A9219
	for <gnats-bugs@gnats.NetBSD.org>; Fri, 12 Jun 2020 18:11:01 +0000 (UTC)
Message-Id: <202006121810.05CIAqoR004888@ceres.dti.ne.jp>
Date: Sat, 13 Jun 2020 03:10:52 +0900 (JST)
From: Izumi Tsutsui <tsutsui@ceres.dti.ne.jp>
Reply-To: tsutsui@ceres.dti.ne.jp
To: gnats-bugs@NetBSD.org
Cc: tsutsui@ceres.dti.ne.jp
Subject: sysinst creates suspicious "/dev/ /cdrom cd9660 ro,noauto" in fstab
X-Send-Pr-Version: 3.95

>Number:         55379
>Category:       install
>Synopsis:       sysinst creates suspicious "/dev/ /cdrom cd9660 ro,noauto" in fstab
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    install-manager
>State:          closed
>Class:          change-request
>Submitter-Id:   net
>Arrival-Date:   Fri Jun 12 18:15:00 +0000 2020
>Closed-Date:    Mon Sep 28 18:52:22 +0000 2020
>Last-Modified:  Mon Sep 28 18:55:01 +0000 2020
>Originator:     Izumi Tsutsui
>Release:        NetBSD 9.0
>Organization:
>Environment:
System: NetBSD 9.0 (RAMDISK) #0: Fri Feb 14 00:06:28 UTC 2020
mkrepro@mkrepro.NetBSD.org:/usr/src/sys/arch/cobalt/compile/RAMDISK
Architecture: maybe all
Machine: all
>Description:
After installation on Gxemul cobalt emulation without CD-ROM,
sysinst creates the following /targetroot/etc/fstab:

---
# mount /dev/wd0a /targetroot
# cat /targetroot/etc/fstab
# NetBSD /etc/fstab
# See /usr/share/examples/fstab/ for more examples.
/dev/wd0a               /       ffs     rw               1 1
# /dev/wd0e             /stand  ???     rw               0 0
/dev/wd0b               none    swap    sw,dp            0 0
kernfs          /kern   kernfs  rw
ptyfs           /dev/pts        ptyfs   rw
procfs          /proc   procfs  rw
/dev/           /cdrom  cd9660  ro,noauto
tmpfs           /var/shm        tmpfs   rw,-m1777,-sram%25
# 
---

I wonder if "/dev/" for /cdrom is intentional.

>How-To-Repeat:
Proceed installation by sysinst on systems without CD-ROM drive.

>Fix:
In src/usr.sbin/sysinst/disks.c, it looks to try to detect
a proper device name for a CD-ROM drive:
---
/*
 * Helper function for get_default_cdrom, gets passed a device
 * name and a void pointer to default_cdrom_data.
 */
static bool
get_default_cdrom_helper(void *state, const char *dev)
{
	struct default_cdrom_data *data = state;

	if (!is_cdrom_device(dev, false))
		return true;

	strlcpy(data->device, dev, data->max_len);
	strlcat(data->device, "a", data->max_len); /* default to partition a */
	data->found = true;

	return false;	/* one is enough, stop iteration */
}

/*
 * Set the argument to the name of the first CD devices actually
 * available, leave it unmodified otherwise.
 * Return true if a device has been found.
 */
bool
get_default_cdrom(char *cd, size_t max_len)
{
	struct default_cdrom_data state;

	state.device = cd;
	state.max_len = max_len;
	state.found = false;

	if (enumerate_disks(&state, get_default_cdrom_helper))
		return state.found;

	return false;
}

 :

done_with_disks:
	if (cdrom_dev[0] == 0)
		get_default_cdrom(cdrom_dev, sizeof(cdrom_dev));

	/* Add /kern, /proc and /dev/pts to fstab and make mountpoint. */
	scripting_fprintf(f, "kernfs\t\t/kern\tkernfs\trw\n");
	scripting_fprintf(f, "ptyfs\t\t/dev/pts\tptyfs\trw\n");
	scripting_fprintf(f, "procfs\t\t/proc\tprocfs\trw\n");
	scripting_fprintf(f, "/dev/%s\t\t/cdrom\tcd9660\tro,noauto\n",
	    cdrom_dev);

---

But there is no check a return value of the get_default_cdrom().

I don't know the name "/dev/" is intentional, but I think
it's much better to choose either of the following:
(1) Omit the  "/dev/ /cdrom noauto" line if no CD-ROM is detected
(2) Use "/dev/cd0a" by default

Actually /dev/cd0a is appropriate on most systems.
(exceptions are only rare mcd(4) and gdrom(4)?)

Note there are functional duplication of "detect CD-ROM media"
in src/usr.sbin/sysinst/utils.c.

---
Izumi Tsutsui

>Release-Note:

>Audit-Trail:

State-Changed-From-To: open->closed
State-Changed-By: martin@NetBSD.org
State-Changed-When: Mon, 28 Sep 2020 18:52:22 +0000
State-Changed-Why:
Fixed, thanks!


From: "Martin Husemann" <martin@netbsd.org>
To: gnats-bugs@gnats.NetBSD.org
Cc: 
Subject: PR/55379 CVS commit: src/usr.sbin/sysinst
Date: Mon, 28 Sep 2020 18:51:34 +0000

 Module Name:	src
 Committed By:	martin
 Date:		Mon Sep 28 18:51:34 UTC 2020

 Modified Files:
 	src/usr.sbin/sysinst: disks.c

 Log Message:
 PR 55379: avoid creating bogus /etc/fstab lines for /dev/cd* if no
 cdrom is available.


 To generate a diff of this commit:
 cvs rdiff -u -r1.68 -r1.69 src/usr.sbin/sysinst/disks.c

 Please note that diffs are not public domain; they are subject to the
 copyright notices on the relevant files.

>Unformatted:

NetBSD Home
NetBSD PR Database Search

(Contact us) $NetBSD: query-full-pr,v 1.46 2020/01/03 16:35:01 leot Exp $
$NetBSD: gnats_config.sh,v 1.9 2014/08/02 14:16:04 spz Exp $
Copyright © 1994-2020 The NetBSD Foundation, Inc. ALL RIGHTS RESERVED.