LCOV - code coverage report
Current view: top level - include/linux - utsname.h (source / functions) Hit Total Coverage
Test: landlock.info Lines: 6 7 85.7 %
Date: 2021-04-22 12:43:58 Functions: 0 0 -

          Line data    Source code
       1             : /* SPDX-License-Identifier: GPL-2.0 */
       2             : #ifndef _LINUX_UTSNAME_H
       3             : #define _LINUX_UTSNAME_H
       4             : 
       5             : 
       6             : #include <linux/sched.h>
       7             : #include <linux/nsproxy.h>
       8             : #include <linux/ns_common.h>
       9             : #include <linux/err.h>
      10             : #include <uapi/linux/utsname.h>
      11             : 
      12             : enum uts_proc {
      13             :         UTS_PROC_OSTYPE,
      14             :         UTS_PROC_OSRELEASE,
      15             :         UTS_PROC_VERSION,
      16             :         UTS_PROC_HOSTNAME,
      17             :         UTS_PROC_DOMAINNAME,
      18             : };
      19             : 
      20             : struct user_namespace;
      21             : extern struct user_namespace init_user_ns;
      22             : 
      23             : struct uts_namespace {
      24             :         struct new_utsname name;
      25             :         struct user_namespace *user_ns;
      26             :         struct ucounts *ucounts;
      27             :         struct ns_common ns;
      28             : } __randomize_layout;
      29             : extern struct uts_namespace init_uts_ns;
      30             : 
      31             : #ifdef CONFIG_UTS_NS
      32             : static inline void get_uts_ns(struct uts_namespace *ns)
      33             : {
      34             :         refcount_inc(&ns->ns.count);
      35             : }
      36             : 
      37             : extern struct uts_namespace *copy_utsname(unsigned long flags,
      38             :         struct user_namespace *user_ns, struct uts_namespace *old_ns);
      39             : extern void free_uts_ns(struct uts_namespace *ns);
      40             : 
      41             : static inline void put_uts_ns(struct uts_namespace *ns)
      42             : {
      43             :         if (refcount_dec_and_test(&ns->ns.count))
      44             :                 free_uts_ns(ns);
      45             : }
      46             : 
      47             : void uts_ns_init(void);
      48             : #else
      49             : static inline void get_uts_ns(struct uts_namespace *ns)
      50             : {
      51             : }
      52             : 
      53             : static inline void put_uts_ns(struct uts_namespace *ns)
      54             : {
      55             : }
      56             : 
      57          50 : static inline struct uts_namespace *copy_utsname(unsigned long flags,
      58             :         struct user_namespace *user_ns, struct uts_namespace *old_ns)
      59             : {
      60          50 :         if (flags & CLONE_NEWUTS)
      61           0 :                 return ERR_PTR(-EINVAL);
      62             : 
      63             :         return old_ns;
      64             : }
      65             : 
      66             : static inline void uts_ns_init(void)
      67             : {
      68             : }
      69             : #endif
      70             : 
      71             : #ifdef CONFIG_PROC_SYSCTL
      72             : extern void uts_proc_notify(enum uts_proc proc);
      73             : #else
      74             : static inline void uts_proc_notify(enum uts_proc proc)
      75             : {
      76             : }
      77             : #endif
      78             : 
      79          43 : static inline struct new_utsname *utsname(void)
      80             : {
      81          43 :         return &current->nsproxy->uts_ns->name;
      82             : }
      83             : 
      84           1 : static inline struct new_utsname *init_utsname(void)
      85             : {
      86           1 :         return &init_uts_ns.name;
      87             : }
      88             : 
      89             : extern struct rw_semaphore uts_sem;
      90             : 
      91             : #endif /* _LINUX_UTSNAME_H */

Generated by: LCOV version 1.14