Comment 12 for bug 1039916

Revision history for this message
TJ (tj) wrote :

Two tests have confirmed that the nvidia driver DKMS package security patches are the cause of the breakage to nvclock/smartdimmer. The upshot is that maybe 'nvclock' should be removed from the archives since the security patches
appear sane and are important to protect most users.

After reversing the recent security update patch 'smartdimmer' was able to request all but one memory region - PRAMIN.

After also removing from the base nvidia package the blacklist for IS_REG_RANGE_WITHIN_MAPPING(nv, 0x700000, 0x100000, offset, length) the program was able to map all memory successfully.

Unfortunately another SIGSEGV occurs whilst calling getpagesize() in unmap_dev_mem() for PCIO (140737354022912 is 0x7ffff7fe4000). I'm not clear how or why getpagesize() should SIGSEGV.

...
(gdb) c
Continuing.
OK: map_mem(): PCIO register 0xd5601000 requested 0x2000 and received 0x2000 after 0 attempts at 0x7ffff7fe4000

Breakpoint 7, map_dev_mem (dev=0x61f0d0, map=0x7fffffffe250) at back_linux.c:266
(gdb) c

...

Program received signal SIGSEGV, Segmentation fault.
0x00007ffff75c35fb in __GI___getpagesize () at ../sysdeps/unix/sysv/linux/getpagesize.c:31
31 ../sysdeps/unix/sysv/linux/getpagesize.c: No such file or directory.
(gdb) bt full
#0 0x00007ffff75c35fb in __GI___getpagesize () at ../sysdeps/unix/sysv/linux/getpagesize.c:31
        __PRETTY_FUNCTION__ = "__getpagesize"
#1 0x000000000040c27a in unmap_dev_mem (Base=140737354022912, Size=8192) at back_linux.c:292
        alignOff = 0
#2 0x0000000000401f43 in unmap_mem () at backend.c:150
No locals.
#3 0x00000000004022dd in unset_card () at backend.c:252
No locals.
#4 0x000000000040dd83 in create_config (file=0x61f030 "/home/tj/.nvclock/config") at config.c:611
        section = "hw0"
        bios = "/home/tj/.nvclock/bios0.rom\000\377\177\000\000\020\360a\000\000\000\000\000\a\000\000\000\000\000\000\000\200\343\377\377\377\177\000\000\020\360a\000\000\000\000\000\001\000\000\000\000\000\000\000A\360a\000\000\000\000"
        base_freq = 27000
        i = 0
#5 0x000000000040d013 in open_config () at config.c:309
        file = 0x61f030 "/home/tj/.nvclock/config"
        home = 0x7fffffffef22 "/home/tj"
        stat_buf = {st_dev = 34, st_ino = 1417714, st_nlink = 2, st_mode = 16877, st_uid = 1000, st_gid = 1000, __pad0 = 0,
          st_rdev = 0, st_size = 4096, st_blksize = 4096, st_blocks = 8, st_atim = {tv_sec = 1345644438, tv_nsec = 0}, st_mtim = {
            tv_sec = 1345749948, tv_nsec = 0}, st_ctim = {tv_sec = 1345749948, tv_nsec = 0}, __unused = {0, 0, 0}}
#6 0x000000000040ba6c in init_nvclock () at back_linux.c:108
        nv_driver = 2
#7 0x00000000004016ff in sd_init () at smartdimmer.c:74
No locals.
#8 0x00000000004018a8 in main (argc=2, argv=0x7fffffffe5d8) at smartdimmer.c:132
        optind = 0
        options = 2
        setvalue = 0
        c = -1