forked from Minki/linux
00fab2350e
This patch is an extension to the zcrypt device driver to provide, support and maintain multiple zcrypt device nodes. The individual zcrypt device nodes can be restricted in terms of crypto cards, domains and available ioctls. Such a device node can be used as a base for container solutions like docker to control and restrict the access to crypto resources. The handling is done with a new sysfs subdir /sys/class/zcrypt. Echoing a name (or an empty sting) into the attribute "create" creates a new zcrypt device node. In /sys/class/zcrypt a new link will appear which points to the sysfs device tree of this new device. The attribute files "ioctlmask", "apmask" and "aqmask" in this directory are used to customize this new zcrypt device node instance. Finally the zcrypt device node can be destroyed by echoing the name into /sys/class/zcrypt/destroy. The internal structs holding the device info are reference counted - so a destroy will not hard remove a device but only marks it as removable when the reference counter drops to zero. The mask values are bitmaps in big endian order starting with bit 0. So adapter number 0 is the leftmost bit, mask is 0x8000... The sysfs attributes accept 2 different formats: * Absolute hex string starting with 0x like "0x12345678" does set the mask starting from left to right. If the given string is shorter than the mask it is padded with 0s on the right. If the string is longer than the mask an error comes back (EINVAL). * Relative format - a concatenation (done with ',') of the terms +<bitnr>[-<bitnr>] or -<bitnr>[-<bitnr>]. <bitnr> may be any valid number (hex, decimal or octal) in the range 0...255. Here are some examples: "+0-15,+32,-128,-0xFF" "-0-255,+1-16,+0x128" "+1,+2,+3,+4,-5,-7-10" A simple usage examples: # create new zcrypt device 'my_zcrypt': echo "my_zcrypt" >/sys/class/zcrypt/create # go into the device dir of this new device echo "my_zcrypt" >create cd my_zcrypt/ ls -l total 0 -rw-r--r-- 1 root root 4096 Jul 20 15:23 apmask -rw-r--r-- 1 root root 4096 Jul 20 15:23 aqmask -r--r--r-- 1 root root 4096 Jul 20 15:23 dev -rw-r--r-- 1 root root 4096 Jul 20 15:23 ioctlmask lrwxrwxrwx 1 root root 0 Jul 20 15:23 subsystem -> ../../../../class/zcrypt ... # customize this zcrypt node clone # enable only adapter 0 and 2 echo "0xa0" >apmask # enable only domain 6 echo "+6" >aqmask # enable all 256 ioctls echo "+0-255" >ioctls # now the /dev/my_zcrypt may be used # finally destroy it echo "my_zcrypt" >/sys/class/zcrypt/destroy Please note that a very similar 'filtering behavior' also applies to the parent z90crypt device. The two mask attributes apmask and aqmask in /sys/bus/ap act the very same for the z90crypt device node. However the implementation here is totally different as the ap bus acts on bind/unbind of queue devices and associated drivers but the effect is still the same. So there are two filters active for each additional zcrypt device node: The adapter/domain needs to be enabled on the ap bus level and it needs to be active on the zcrypt device node level. Signed-off-by: Harald Freudenberger <freude@linux.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
252 lines
5.5 KiB
Plaintext
252 lines
5.5 KiB
Plaintext
CONFIG_SYSVIPC=y
|
|
CONFIG_POSIX_MQUEUE=y
|
|
CONFIG_USELIB=y
|
|
CONFIG_AUDIT=y
|
|
CONFIG_NO_HZ_IDLE=y
|
|
CONFIG_HIGH_RES_TIMERS=y
|
|
CONFIG_TASKSTATS=y
|
|
CONFIG_TASK_DELAY_ACCT=y
|
|
CONFIG_TASK_XACCT=y
|
|
CONFIG_TASK_IO_ACCOUNTING=y
|
|
# CONFIG_CPU_ISOLATION is not set
|
|
CONFIG_IKCONFIG=y
|
|
CONFIG_IKCONFIG_PROC=y
|
|
CONFIG_CGROUPS=y
|
|
CONFIG_MEMCG=y
|
|
CONFIG_MEMCG_SWAP=y
|
|
CONFIG_BLK_CGROUP=y
|
|
CONFIG_CGROUP_SCHED=y
|
|
CONFIG_RT_GROUP_SCHED=y
|
|
CONFIG_CGROUP_PIDS=y
|
|
CONFIG_CGROUP_FREEZER=y
|
|
CONFIG_CGROUP_HUGETLB=y
|
|
CONFIG_CPUSETS=y
|
|
CONFIG_CGROUP_DEVICE=y
|
|
CONFIG_CGROUP_CPUACCT=y
|
|
CONFIG_CGROUP_PERF=y
|
|
CONFIG_NAMESPACES=y
|
|
CONFIG_USER_NS=y
|
|
CONFIG_BLK_DEV_INITRD=y
|
|
CONFIG_EXPERT=y
|
|
# CONFIG_SYSFS_SYSCALL is not set
|
|
CONFIG_CHECKPOINT_RESTORE=y
|
|
CONFIG_BPF_SYSCALL=y
|
|
CONFIG_USERFAULTFD=y
|
|
# CONFIG_COMPAT_BRK is not set
|
|
CONFIG_PROFILING=y
|
|
CONFIG_OPROFILE=y
|
|
CONFIG_KPROBES=y
|
|
CONFIG_JUMP_LABEL=y
|
|
CONFIG_STATIC_KEYS_SELFTEST=y
|
|
CONFIG_MODULES=y
|
|
CONFIG_MODULE_UNLOAD=y
|
|
CONFIG_BLK_DEV_INTEGRITY=y
|
|
CONFIG_PARTITION_ADVANCED=y
|
|
CONFIG_IBM_PARTITION=y
|
|
CONFIG_DEFAULT_DEADLINE=y
|
|
CONFIG_LIVEPATCH=y
|
|
CONFIG_NR_CPUS=256
|
|
CONFIG_NUMA=y
|
|
CONFIG_HZ_100=y
|
|
CONFIG_KEXEC_FILE=y
|
|
CONFIG_MEMORY_HOTPLUG=y
|
|
CONFIG_MEMORY_HOTREMOVE=y
|
|
CONFIG_KSM=y
|
|
CONFIG_TRANSPARENT_HUGEPAGE=y
|
|
CONFIG_CLEANCACHE=y
|
|
CONFIG_FRONTSWAP=y
|
|
CONFIG_ZSWAP=y
|
|
CONFIG_ZBUD=m
|
|
CONFIG_ZSMALLOC=m
|
|
CONFIG_ZSMALLOC_STAT=y
|
|
CONFIG_IDLE_PAGE_TRACKING=y
|
|
CONFIG_CRASH_DUMP=y
|
|
CONFIG_BINFMT_MISC=m
|
|
CONFIG_HIBERNATION=y
|
|
CONFIG_NET=y
|
|
CONFIG_PACKET=y
|
|
CONFIG_UNIX=y
|
|
CONFIG_NET_KEY=y
|
|
CONFIG_INET=y
|
|
CONFIG_IP_MULTICAST=y
|
|
CONFIG_L2TP=m
|
|
CONFIG_L2TP_DEBUGFS=m
|
|
CONFIG_VLAN_8021Q=y
|
|
CONFIG_NET_SCHED=y
|
|
CONFIG_NET_SCH_CBQ=m
|
|
CONFIG_NET_SCH_PRIO=m
|
|
CONFIG_NET_SCH_RED=m
|
|
CONFIG_NET_SCH_SFQ=m
|
|
CONFIG_NET_SCH_TEQL=m
|
|
CONFIG_NET_SCH_TBF=m
|
|
CONFIG_NET_SCH_GRED=m
|
|
CONFIG_NET_SCH_DSMARK=m
|
|
CONFIG_NET_CLS_TCINDEX=m
|
|
CONFIG_NET_CLS_ROUTE4=m
|
|
CONFIG_NET_CLS_FW=m
|
|
CONFIG_NET_CLS_U32=m
|
|
CONFIG_CLS_U32_MARK=y
|
|
CONFIG_NET_CLS_RSVP=m
|
|
CONFIG_NET_CLS_RSVP6=m
|
|
CONFIG_NET_CLS_ACT=y
|
|
CONFIG_NET_ACT_POLICE=y
|
|
CONFIG_BPF_JIT=y
|
|
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
|
CONFIG_DEVTMPFS=y
|
|
CONFIG_BLK_DEV_LOOP=m
|
|
CONFIG_BLK_DEV_NBD=m
|
|
CONFIG_BLK_DEV_RAM=y
|
|
CONFIG_VIRTIO_BLK=y
|
|
CONFIG_SCSI=y
|
|
CONFIG_BLK_DEV_SD=y
|
|
CONFIG_CHR_DEV_ST=y
|
|
CONFIG_BLK_DEV_SR=y
|
|
CONFIG_BLK_DEV_SR_VENDOR=y
|
|
CONFIG_CHR_DEV_SG=y
|
|
CONFIG_SCSI_CONSTANTS=y
|
|
CONFIG_SCSI_LOGGING=y
|
|
CONFIG_SCSI_FC_ATTRS=y
|
|
CONFIG_ZFCP=y
|
|
CONFIG_SCSI_VIRTIO=y
|
|
CONFIG_MD=y
|
|
CONFIG_MD_LINEAR=m
|
|
CONFIG_MD_MULTIPATH=m
|
|
CONFIG_BLK_DEV_DM=y
|
|
CONFIG_DM_CRYPT=m
|
|
CONFIG_DM_SNAPSHOT=m
|
|
CONFIG_DM_MIRROR=m
|
|
CONFIG_DM_LOG_USERSPACE=m
|
|
CONFIG_DM_RAID=m
|
|
CONFIG_DM_ZERO=m
|
|
CONFIG_DM_MULTIPATH=m
|
|
CONFIG_DM_MULTIPATH_QL=m
|
|
CONFIG_DM_MULTIPATH_ST=m
|
|
CONFIG_DM_UEVENT=y
|
|
CONFIG_DM_VERITY=m
|
|
CONFIG_DM_SWITCH=m
|
|
CONFIG_NETDEVICES=y
|
|
CONFIG_BONDING=m
|
|
CONFIG_DUMMY=m
|
|
CONFIG_EQUALIZER=m
|
|
CONFIG_TUN=m
|
|
CONFIG_VIRTIO_NET=y
|
|
# CONFIG_NET_VENDOR_ALACRITECH is not set
|
|
# CONFIG_NET_VENDOR_CORTINA is not set
|
|
# CONFIG_NET_VENDOR_SOLARFLARE is not set
|
|
# CONFIG_NET_VENDOR_SOCIONEXT is not set
|
|
# CONFIG_NET_VENDOR_SYNOPSYS is not set
|
|
# CONFIG_INPUT is not set
|
|
# CONFIG_SERIO is not set
|
|
# CONFIG_VT is not set
|
|
CONFIG_DEVKMEM=y
|
|
CONFIG_RAW_DRIVER=m
|
|
CONFIG_VIRTIO_BALLOON=y
|
|
CONFIG_EXT4_FS=y
|
|
CONFIG_EXT4_FS_POSIX_ACL=y
|
|
CONFIG_EXT4_FS_SECURITY=y
|
|
CONFIG_XFS_FS=y
|
|
CONFIG_XFS_QUOTA=y
|
|
CONFIG_XFS_POSIX_ACL=y
|
|
CONFIG_XFS_RT=y
|
|
CONFIG_BTRFS_FS=y
|
|
CONFIG_BTRFS_FS_POSIX_ACL=y
|
|
CONFIG_FANOTIFY=y
|
|
CONFIG_FUSE_FS=y
|
|
CONFIG_PROC_KCORE=y
|
|
CONFIG_TMPFS=y
|
|
CONFIG_TMPFS_POSIX_ACL=y
|
|
CONFIG_HUGETLBFS=y
|
|
# CONFIG_NETWORK_FILESYSTEMS is not set
|
|
CONFIG_DEBUG_INFO=y
|
|
CONFIG_DEBUG_INFO_DWARF4=y
|
|
CONFIG_GDB_SCRIPTS=y
|
|
CONFIG_UNUSED_SYMBOLS=y
|
|
CONFIG_DEBUG_SECTION_MISMATCH=y
|
|
CONFIG_DEBUG_FORCE_WEAK_PER_CPU=y
|
|
CONFIG_MAGIC_SYSRQ=y
|
|
CONFIG_DEBUG_PAGEALLOC=y
|
|
CONFIG_DETECT_HUNG_TASK=y
|
|
CONFIG_PANIC_ON_OOPS=y
|
|
CONFIG_PROVE_LOCKING=y
|
|
CONFIG_LOCK_STAT=y
|
|
CONFIG_DEBUG_LOCKDEP=y
|
|
CONFIG_DEBUG_ATOMIC_SLEEP=y
|
|
CONFIG_DEBUG_LIST=y
|
|
CONFIG_DEBUG_SG=y
|
|
CONFIG_DEBUG_NOTIFIERS=y
|
|
CONFIG_RCU_CPU_STALL_TIMEOUT=60
|
|
CONFIG_LATENCYTOP=y
|
|
CONFIG_SCHED_TRACER=y
|
|
CONFIG_FTRACE_SYSCALLS=y
|
|
CONFIG_TRACER_SNAPSHOT_PER_CPU_SWAP=y
|
|
CONFIG_STACK_TRACER=y
|
|
CONFIG_BLK_DEV_IO_TRACE=y
|
|
CONFIG_FUNCTION_PROFILER=y
|
|
# CONFIG_RUNTIME_TESTING_MENU is not set
|
|
CONFIG_S390_PTDUMP=y
|
|
CONFIG_CRYPTO_CRYPTD=m
|
|
CONFIG_CRYPTO_AUTHENC=m
|
|
CONFIG_CRYPTO_TEST=m
|
|
CONFIG_CRYPTO_CCM=m
|
|
CONFIG_CRYPTO_GCM=m
|
|
CONFIG_CRYPTO_CBC=y
|
|
CONFIG_CRYPTO_CFB=m
|
|
CONFIG_CRYPTO_CTS=m
|
|
CONFIG_CRYPTO_LRW=m
|
|
CONFIG_CRYPTO_PCBC=m
|
|
CONFIG_CRYPTO_XTS=m
|
|
CONFIG_CRYPTO_CMAC=m
|
|
CONFIG_CRYPTO_XCBC=m
|
|
CONFIG_CRYPTO_VMAC=m
|
|
CONFIG_CRYPTO_CRC32=m
|
|
CONFIG_CRYPTO_MD4=m
|
|
CONFIG_CRYPTO_MICHAEL_MIC=m
|
|
CONFIG_CRYPTO_RMD128=m
|
|
CONFIG_CRYPTO_RMD160=m
|
|
CONFIG_CRYPTO_RMD256=m
|
|
CONFIG_CRYPTO_RMD320=m
|
|
CONFIG_CRYPTO_SHA256=y
|
|
CONFIG_CRYPTO_SHA512=m
|
|
CONFIG_CRYPTO_TGR192=m
|
|
CONFIG_CRYPTO_WP512=m
|
|
CONFIG_CRYPTO_ANUBIS=m
|
|
CONFIG_CRYPTO_ARC4=m
|
|
CONFIG_CRYPTO_BLOWFISH=m
|
|
CONFIG_CRYPTO_CAMELLIA=m
|
|
CONFIG_CRYPTO_CAST5=m
|
|
CONFIG_CRYPTO_CAST6=m
|
|
CONFIG_CRYPTO_FCRYPT=m
|
|
CONFIG_CRYPTO_KHAZAD=m
|
|
CONFIG_CRYPTO_SALSA20=m
|
|
CONFIG_CRYPTO_SEED=m
|
|
CONFIG_CRYPTO_SERPENT=m
|
|
CONFIG_CRYPTO_SM4=m
|
|
CONFIG_CRYPTO_SPECK=m
|
|
CONFIG_CRYPTO_TEA=m
|
|
CONFIG_CRYPTO_TWOFISH=m
|
|
CONFIG_CRYPTO_DEFLATE=m
|
|
CONFIG_CRYPTO_LZ4=m
|
|
CONFIG_CRYPTO_LZ4HC=m
|
|
CONFIG_CRYPTO_ANSI_CPRNG=m
|
|
CONFIG_CRYPTO_USER_API_HASH=m
|
|
CONFIG_CRYPTO_USER_API_SKCIPHER=m
|
|
CONFIG_CRYPTO_USER_API_RNG=m
|
|
CONFIG_ZCRYPT=m
|
|
CONFIG_ZCRYPT_MULTIDEVNODES=y
|
|
CONFIG_PKEY=m
|
|
CONFIG_CRYPTO_PAES_S390=m
|
|
CONFIG_CRYPTO_SHA1_S390=m
|
|
CONFIG_CRYPTO_SHA256_S390=m
|
|
CONFIG_CRYPTO_SHA512_S390=m
|
|
CONFIG_CRYPTO_DES_S390=m
|
|
CONFIG_CRYPTO_AES_S390=m
|
|
CONFIG_CRYPTO_CRC32_S390=y
|
|
CONFIG_CRC7=m
|
|
# CONFIG_XZ_DEC_X86 is not set
|
|
# CONFIG_XZ_DEC_POWERPC is not set
|
|
# CONFIG_XZ_DEC_IA64 is not set
|
|
# CONFIG_XZ_DEC_ARM is not set
|
|
# CONFIG_XZ_DEC_ARMTHUMB is not set
|
|
# CONFIG_XZ_DEC_SPARC is not set
|
|
CONFIG_CMM=m
|