You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
37 lines
1.1 KiB
37 lines
1.1 KiB
14 years ago
|
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;
|
||
|
}
|