mirror of
https://github.com/pfsense/pfsense.git
synced 2025-10-26 11:38:35 +00:00
Fix #3235
. diag_nanobsd.php: . Since conf_mount_ro() is always being called, always call conf_mount_rw to keep refcount correct . Do not show refcount_read() return when it's -1 . config.lib.inc . Increment and decrement refcount even if nanobsd_force_rw is set. This is necessary to avoid partition being mounted as RO when nanobsd_force_rw is disabled and any process requested it to be RW
This commit is contained in:
parent
a4e4b5609c
commit
b8250344f5
@ -308,10 +308,7 @@ function conf_mount_rw() {
|
||||
if($g['platform'] == "cdrom" or $g['platform'] == "pfSense")
|
||||
return;
|
||||
|
||||
if (!isset($config['system']['nanobsd_force_rw']) && (refcount_reference(1000) > 1))
|
||||
return;
|
||||
|
||||
if (isset($config['system']['nanobsd_force_rw']) && is_writable("/"))
|
||||
if ((refcount_reference(1000) > 1) && is_writable("/"))
|
||||
return;
|
||||
|
||||
$status = mwexec("/sbin/mount -u -w -o sync,noatime {$g['cf_path']}");
|
||||
@ -348,12 +345,15 @@ function conf_mount_ro() {
|
||||
/* Do not trust $g['platform'] since this can be clobbered during factory reset. */
|
||||
$platform = trim(file_get_contents("/etc/platform"));
|
||||
/* do not umount on cdrom or pfSense platforms */
|
||||
if($platform == "cdrom" or $platform == "pfSense" or isset($config['system']['nanobsd_force_rw']))
|
||||
if($platform == "cdrom" or $platform == "pfSense")
|
||||
return;
|
||||
|
||||
if (refcount_unreference(1000) > 0)
|
||||
return;
|
||||
|
||||
if(isset($config['system']['nanobsd_force_rw']))
|
||||
return;
|
||||
|
||||
if($g['booting'])
|
||||
return;
|
||||
|
||||
|
||||
@ -108,14 +108,11 @@ if ($_POST['changero']) {
|
||||
}
|
||||
|
||||
if ($_POST['setrw']) {
|
||||
if (isset($_POST['nanobsd_force_rw'])) {
|
||||
if (!is_writable("/")) {
|
||||
conf_mount_rw();
|
||||
}
|
||||
conf_mount_rw();
|
||||
if (isset($_POST['nanobsd_force_rw']))
|
||||
$config['system']['nanobsd_force_rw'] = true;
|
||||
} else {
|
||||
else
|
||||
unset($config['system']['nanobsd_force_rw']);
|
||||
}
|
||||
|
||||
write_config("Changed Permanent Read/Write Setting");
|
||||
conf_mount_ro();
|
||||
@ -175,7 +172,8 @@ if ($savemsg)
|
||||
<form action="diag_nanobsd.php" method="post" name="iform">
|
||||
<?php if (is_writable("/")) {
|
||||
$refcount = refcount_read(1000);
|
||||
if ($refcount == 1) {
|
||||
/* refcount_read returns -1 when shared memory section does not exist */
|
||||
if ($refcount == 1 || $refcount == -1) {
|
||||
$refdisplay = "";
|
||||
} else {
|
||||
$refdisplay = " (reference count " . $refcount . ")";
|
||||
|
||||
Loading…
Reference in New Issue
Block a user