# Copyright 2018 The ChromiumOS Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

description   "Start rmtfs server"
author        "benchan@chromium.org"

env RMTFS_DEV=/dev/qcom_rmtfs_mem1
env RMTFS_DIR=/var/lib/rmtfs
env RMTFS_BOOT_DIR=/var/lib/rmtfs/boot
env SOC_DIR=/sys/devices/platform/soc@0

# qcom-rmtfs-added: One of the devices we need is ready.
# qcom-modem-added: The other device we need is ready.
# syslog: minijail bind mounts /dev/log, which won't exist until syslog starts.
# verify_fsg: is in charge of creating files in ${RMTFS_DIR}
start on started syslog and stopped verify_fsg and ((qcom-rmtfs-added and qcom-modem-added) or rmtfs-early)
stop on starting pre-shutdown and stopped shill

# This service handles modem file system storage requests. Other than
# the connection to the modem itself, it keeps no state. So it should
# be okay, though not preferable, to kill and restart this service.
oom score -100
respawn

expect fork

pre-start script
  # Make the directory just in case something went weird with verify_fsg
  mkdir -p "${RMTFS_BOOT_DIR}"

  # Set restrictive permissions.  We don't combine this with the mkdir -p
  # above (using a "-m 0700") for two reasons:
  # a) mkdir -p only applies permissions to the last dir in the chain.
  # b) If the dir already exists (maybe an old version of the software
  #    created it) the permissions won't change.
  chmod 0700 "${RMTFS_BOOT_DIR}" "${RMTFS_DIR}"

  # The verify_fsg script creates things w/ root.  Change to the right owner
  chown rmtfs:rmtfs "${RMTFS_BOOT_DIR}" "${RMTFS_DIR}"

  for f in modem_fsc modem_fsg modem_fs1 modem_fs2; do
    if [ ! -f "${RMTFS_BOOT_DIR}/${f}" ]; then
      touch "${RMTFS_BOOT_DIR}/${f}"
    fi
    chown rmtfs:rmtfs "${RMTFS_BOOT_DIR}/${f}"
  done
  # Allow the rmtfs user to control the remoteproc sysfs state file.
  chown rmtfs:rmtfs /sys/bus/platform/drivers/qcom-q6v5-mss/[0-9]*/remoteproc/remoteproc*/state
  chmod g+w /sys/bus/platform/drivers/qcom-q6v5-mss/[0-9]*/remoteproc/remoteproc*/state
end script

# rmtfs needs CAP_NET_ADMIN to open AF_QIPCRTR socket.
# We provide read-only access to /var, so we can get a read/write bind mount
# for /var/lib/rmtfs/boot.
exec minijail0 --profile=minimalistic-mountns -inNlvr --uts \
  -b "${RMTFS_DEV}",,1 -b /sys -b "${SOC_DIR}",,1 \
  -k '/var,/var,tmpfs,MS_NODEV|MS_NOEXEC|MS_NOSUID,mode=755,size=10M' \
  -b "${RMTFS_BOOT_DIR}",,1 \
  -c cap_net_admin=e -u rmtfs -g rmtfs \
  -S /usr/share/policy/rmtfs-seccomp.policy \
  -- /usr/bin/rmtfs -so "${RMTFS_BOOT_DIR}"
