LogoopenSUSE Build Service > Projects
Sign Up | Log In

View File oom_score_adj.patch of Package kdelibs3 (Project KDE:KDE3)

Index: kdelibs-3.5.10/kinit/start_kdeinit.c
===================================================================
--- kdelibs-3.5.10.orig/kinit/start_kdeinit.c
+++ kdelibs-3.5.10/kinit/start_kdeinit.c
@@ -44,11 +44,30 @@ static int set_protection( pid_t pid, in
 {
    char buf[ 1024 ];
    int procfile;
+   struct stat st;
+
+   /* Newer kernels (noticed in 2.6.36) */
+   sprintf( buf, "/proc/%d/oom_score_adj", pid );
+   if ( lstat (buf, &st) == 0) {
+     if( !enable ) {
+       /* Be paranoid and check that the pid we got from the pipe
+          belongs to this user. */
+       if( st.st_uid != getuid())
+           return 0;
+     }
+     procfile = open(buf, O_WRONLY);
+     if( enable )
+       write( procfile, "-300", sizeof( "-300" ));
+     else
+       write( procfile, "0", sizeof( "0" ));
+     close( procfile );
+     return 1;
+   }
+
    sprintf( buf, "/proc/%d/stat", pid );
    if( !enable ) {
        /* Be paranoid and check that the pid we got from the pipe
           belongs to this user. */
-       struct stat st;
        if( lstat( buf, &st ) < 0 || st.st_uid != getuid())
            return 0;
    }