MDADM Failure - where it came from?

Login or Register to Reply

Thread Tools Search this Thread
# 8  
Kernel Version

its the amd64 kernel from debian wheezy backports 3.16. i think its a problem with the marvel chipset. i found some other who have those problems in the net, but i am not sure.
Login or Register to Reply

Thread Tools Search this Thread
Search this Thread:
Advanced Search

More UNIX and Linux Forum Topics You Might Find Helpful
boot up failure unix sco after power failure
hi power went out. next day unix sco wont boot up error code 303. any help appreciated as we are clueless.... UNIX for Dummies Questions & Answers
UNIX for Dummies Questions & Answers
mdadm for / and /boot
had this RHEL 5 installation with /dev/sda1 and /dev/sda2 running.. created two more partitions /dev/sdj1 and /dev/sdj2 , the same sized partition as /dev/sda trying to use mdadm to create RAID1 .. I cannot even do it in "rescue" mode, I wonder if it can be done.. it kept...... Red Hat
Red Hat
mdadm container! How does it work
Hi everyone, I am not sure if I understand how mdadm --create /dev/md0 --level=container works? A device called /dev/md0 appears in /proc/mdstat but I am not sure how to use that device? I have 2 blank drives with 1 500GB partition on each. I would like to setup mirroring, but not in the...... UNIX for Advanced & Expert Users
UNIX for Advanced & Expert Users
mdadm question
Hello, I have 4 drives (500G each) in a raid 10, I got a power failior and this is the result? cat /proc/mdstat Personalities : md126 : inactive sdb sdc sdd sde 1953536528 blocks super external:-md127/0 md127 : inactive sdd(S) sde(S) sdb(S) sdc(S) 9028 blocks super...... UNIX for Advanced & Expert Users
UNIX for Advanced & Expert Users
mdadm - Swapping 500GB disks for 1TB
Hi, I have a three disk raid 5, with 500GB disks. This is close to being full, and whilst I can just add another disk and rebuild to add another 500GB, I would prefer to replace with 1TB disks. So i have some questions. Can I replace these disks one by one with bigger disks? I...... Linux
AA_CHANGE_HAT(2)						     AppArmor							  AA_CHANGE_HAT(2)

aa_change_hat - change to or from a "hat" within a AppArmor profile
#include <sys/apparmor.h> int aa_change_hat (char *subprofile, unsigned long magic_token); Link with -lapparmor when compiling.
An AppArmor profile applies to an executable program; if a portion of the program needs different access permissions than other portions, the program can "change hats" to a different role, also known as a subprofile. To change into a new hat, it calls the aa_change_hat() function to do so. It passes in a pointer to the subprofile which it wants to change into, and a 64bit magic_token. The magic_token is used to return out of the subprofile at a later time. If a program wants to return out of the current subprofile to the original profile, it calls aa_change_hat() with a pointer to NULL as the subprofile, and the original magic_token value. If the magic_token does not match the original magic_token passed into the kernel when the program entered the subprofile, the change back to the original profile will not happen, and the current task will be killed. If the magic_token matches the original token, then the process will change back to the original profile. If the program wants to change to a subprofile that it can never change back out of, the application should call aa_change_hat() with a magic_token of 0. As both read(2) and write(2) are mediated, a file must be listed in a subprofile definition if the file is to be accessed while the process is in a "hat".
On success zero is returned. On error, -1 is returned, and errno(3) is set appropriately.
EINVAL The apparmor kernel module is not loaded or the communication via the /proc/*/attr/current file did not conform to protocol. ENOMEM Insufficient kernel memory was available. EPERM The calling application is not confined by apparmor. ECHILD The application's profile has no hats defined for it. EACCES The specified subprofile does not exist in this profile or the process tried to change another process's domain.
The following code examples shows simple, if contrived, uses of aa_change_hat(); a typical use of aa_change_hat() will separate privileged portions of a process from unprivileged portions of a process, such as keeping unauthenticated network traffic handling separate from authenticated network traffic handling in OpenSSH or executing user-supplied CGI scripts in apache. The use of random(3) is simply illustrative. Use of /dev/urandom is recommended. First, a simple high-level overview of aa_change_hat() use: void foo (void) { unsigned long magic_token; /* get a random magic token value from our huge entropy pool */ magic_token = random_function(); /* change into the subprofile while * we do stuff we don't trust */ aa_change_hat("stuff_we_dont_trust", magic_token); /* Go do stuff we don't trust -- this is all * done in *this* process space, no separate * fork()/exec()'s are done. */ interpret_perl_stuff(stuff_from_user); /* now change back to our original profile */ aa_change_hat(NULL, magic_token); } Second, an example to show that files not listed in a subprofile ("hat") aren't accessible after an aa_change_hat() call: #include <stdlib.h> #include <string.h> #include <sys/apparmor.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <stdio.h> #include <unistd.h> int main(int argc, char *argv[]) { int fd; unsigned long tok; char buf[10]; /* random() is a poor choice */ tok = random(); /* open /etc/passwd outside of any hat */ if ((fd=open("/etc/passwd", O_RDONLY)) < 0) perror("Failure opening /etc/passwd"); /* confirm for ourselves that we can really read /etc/passwd */ memset(&buf, 0, 10); if (read(fd, &buf, 10) == -1) { perror("Failure reading /etc/passwd pre-hat"); _exit(1); } buf[9] = ''; printf("/etc/passwd: %s ", buf); /* change hat to the "hat" subprofile, which should not have * read access to /etc/passwd -- even though we have a valid * file descriptor at the time of the aa_change_hat() call. */ if (aa_change_hat("hat", tok)) { perror("Failure changing hat -- aborting"); _exit(1); } /* confirm that we cannot read /etc/passwd */ lseek(fd,0,SEEK_SET); memset(&buf, 0, 10); if (read(fd, &buf, 10) == -1) perror("Failure reading /etc/passwd post-hat"); buf[9] = ''; printf("/etc/passwd: %s ", buf); return 0; } This code example requires the following profile to be loaded with apparmor_parser(8): /tmp/ch { /etc/ mr, /etc/locale/** r, /etc/localtime r, /usr/share/locale/** r, /usr/share/zoneinfo/** r, /usr/lib/locale/** mr, /usr/lib/gconv/*.so mr, /usr/lib/gconv/gconv-modules* mr, /lib/ld-*.so* mrix, /lib/libc*.so* mr, /lib/libapparmor*.so* mr, /dev/pts/* rw, /tmp/ch mr, /etc/passwd r, ^hat { /dev/pts/* rw, } } The output when run: $ /tmp/ch /etc/passwd: root:x:0: Failure reading /etc/passwd post-hat: Permission denied /etc/passwd: $
None known. If you find any, please report them to bugzilla at <>. Note that aa_change_hat(2) provides no memory barriers between different areas of a program; if address space separation is required, then separate processes should be used.
apparmor(7), apparmor.d(5), apparmor_parser(8), and <>.
/SUSE 2007-07-27 AA_CHANGE_HAT(2)

Featured Tech Videos