online #ˆl–Ãa¾”ªClÊq@?q±\êbѿ ƒ €ÁÀ¿I/* SPDX-License-Identifier: GPL-2.0 */ #include #define DEVCG_ACC_MKNOD 1 #define DEVCG_ACC_READ 2 #define DEVCG_ACC_WRITE 4 #define DEVCG_ACC_MASK (DEVCG_ACC_MKNOD | DEVCG_ACC_READ | DEVCG_ACC_WRITE) #define DEVCG_DEV_BLOCK 1 #define DEVCG_DEV_CHAR 2 #define DEVCG_DEV_ALL 4 /* this represents all devices */ #if defined(CONFIG_CGROUP_DEVICE) || defined(CONFIG_CGROUP_BPF) int devcgroup_check_permission(short type, u32 major, u32 minor, short access); static inline int devcgroup_inode_permission(struct inode *inode, int mask) { short type, access = 0; if (likely(!inode->i_rdev)) return 0; if (S_ISBLK(inode->i_mode)) type = DEVCG_DEV_BLOCK; else if (S_ISCHR(inode->i_mode)) type = DEVCG_DEV_CHAR; else return 0; if (mask & MAY_WRITE) access |= DEVCG_ACC_WRITE; if (mask & MAY_READ) access |= DEVCG_ACC_READ; return devcgroup_check_permission(type, imajor(inode), iminor(inode), access); } static inline int devcgroup_inode_mknod(int mode, dev_t dev) { short type; if (!S_ISBLK(mode) && !S_ISCHR(mode)) return 0; if (S_ISCHR(mode) && dev == WHITEOUT_DEV) return 0; if (S_ISBLK(mode)) type = DEVCG_DEV_BLOCK; else type = DEVCG_DEV_CHAR; return devcgroup_check_permission(type, MAJOR(dev), MINOR(dev), DEVCG_ACC_MKNOD); } #else static inline int devcgroup_check_permission(short type, u32 major, u32 minor, short access) { return 0; } static inline int devcgroup_inode_permission(struct inode *inode, int mask) { return 0; } static inline int devcgroup_inode_mknod(int mode, dev_t dev) { return 0; } #endif �_’I|¥‰ÓMjqØ‚¦ð¬÷ÁÀFile not found. ;ˆl–Ðz¾”*eJe@¿q§®2Ú˜´oÄ „dMÃa–ß=¿JJj"Tâ‚ Æ™¸&”Å£Â?÷ELF>Ð~@hë@8 @PkPkppp•Ç•Ç@@@ØkØk0¸0È0ÈØPàÉàÙàÙ¨¨¨ ÈÈÈ$$Såtd¨¨¨ Påtd(?(?(?44QåtdRåtd0¸0È0ÈÐÐGNUÀGNUi?€%Ñ®\-ÝÀìÜœB$¢¡=Åy Cd‚Ô’XA�$D!" �˜@P@ A`ŒŠ� @€ @ €-…,Ÿ0•’(jÔ*ù H0‚ h`ˆñ€HQ“<¨H˜ ˆj€*4@ I€òB Q6Bˆà…P@&¥€–   Lx‚”±…° *ÓÀ @ @DL‚È@A˜1Ð,�€°À H  -¥–†¥ÀH"dp!y|}€‚„†‡ˆ‰‹�‘’“•—˜š�Ÿ £¤¦§¨«­®¯±³¶¸º¾¿ÁÂÃÄÆÇÉËÌÍÏÑÓÕØÙÛÜÝßàáäåæèéíîïðñòóõöúûüý  &)*-/13579;<>ABCDEFHIKLMNORSWXZ\^`cdfg¤‰cúü1w×Ní{'é?ŒqŸ+‹nOC„Q²ÀdÖR? ³¸²~ ãÚU ¨F2ÂÒ‰¥'¿ÿ ç?³kwÀüçV™4ù£H"ãw–²LšÈˆ5Cà&˼Û1R—*à2‹`˜û”Ðɘ.ú>íñUEò†/Ü=7÷#¿’ð\ª<™7È+œ¸ŽfϪÇa�‰’t¸¥µÍ©«:�]‰a¶Ë—°ÁEbý”ã't#ûbm†5¯éîMg\Š¡ÿ™—`$R<6Ñie̓ó4‘”50šþS{p+‰Oc¨²f”Œ“µƒóT"›Î¥;wz2RíÙrq$ÌÉ�¾’~Ò<·�åët ZyÝÇI2þ« ©h@vÕz[a‹jPb£›8øË†ÓÇטֱ¨mÇñº¯Ø9·JPô¢‡ó‡¤3–®¦ï=>‹Í HðüÜãEt¡%L1æasecLú\¦™ïÎ ]4äqÓ‡`‚³Ä'GCs¨�!˵ò™—::©Lä7yR—Ì Bã+«¡X„êAŸ×rV9 «øëªBJ5•d†–#1žÅL¡¡ÔTJP'Ü KB&);jWÝ;ÈÜ/%ˆ[>!ƒ×Ùkþ¡äœo°.¢= 3AÓ¹§}3vÕ·…¥3Ó€£‡mIŸ