分页: 1 / 1

repoline的问题:insmod一个简单ko,出现错误

发表于 : 2018-04-11 15:54
ddk3000
Ubuntu 16.04.2 (64位)内核4.4.0-116-generic
制作一个最简单的hello.ko,执行insmod hello.ko时出错,日志显示错误是:
version magic '4.4.0-116-generic SMP mod_unload modversions'
should be '4.4.0-116-generic SMP mod_unload modversions retpoline'


Ubuntu说retpoline是为了解决安全问题引入的编译选项,貌似需要用支持retpoline选项的编译器(gcc 7.3)重新编译软件:
https://wiki.ubuntu.com/SecurityTeam/Kn ... ndMeltdown
https://wiki.ubuntu.com/SecurityTeam/Kn ... #Retpoline
https://lwn.net/Articles/745385/

我安装了gcc-7,可是7.2版本。
我也不清楚如何编译ko,使之支持retpoline,能运行在此内核中。

有人知道吗?

Re: repoline的问题:insmod一个简单ko,出现错误

发表于 : 2018-04-13 16:15
ddk3000
目前已知这三个内核都有这个问题:
3.13.0-143-generic
4.4.0-116-generic
4.4.0-119-generic

如何解决?

Re: repoline的问题:insmod一个简单ko,出现错误

发表于 : 2018-04-13 19:02
poloshiao
Ubuntu 16.04.2 (64位)内核4.4.0-116-generic
貌似需要用支持retpoline选项的编译器
目前已知这三个内核都有这个问题:
3.13.0-143-generic
4.4.0-116-generic
4.4.0-119-generic
升級到 Ubuntu 18.04 / 目前預裝 内核 4.15.0-13-generic
預設 支援 retpoline

參閱
https://www.phoronix.com/scan.php?page= ... -Retpoline
Linux 4.15 has Retpoline support as of a few days ago.

Re: repoline的问题:insmod一个简单ko,出现错误

发表于 : 2018-04-16 9:54
ddk3000
升級到 Ubuntu 18.04 / 目前預裝 内核 4.15.0-13-generic
預設 支援 retpoline

參閱
https://www.phoronix.com/scan.php?page= ... -Retpoline
Linux 4.15 has Retpoline support as of a few days ago.[/quote]

*********************************************************************************

我使用Ubuntu 18.04(内核4.15.0-15-generic),用modinfo查看显示如下:

ddk@ddk:/lib/modules/4.15.0-15-generic/kernel/net/x25$ modinfo x25.ko
filename: /lib/modules/4.15.0-15-generic/kernel/net/x25/x25.ko
alias: net-pf-9
license: GPL
description: The X.25 Packet Layer network layer protocol
author: Jonathan Naylor <g4klx@g4klx.demon.co.uk>
srcversion: 56421E42FEC48B08980FFFE
depends:
retpoline: Y
intree: Y
name: x25
vermagic: 4.15.0-15-generic SMP mod_unload
signat: PKCS#7
signer:
sig_key:
sig_hashalgo: md4

而在Ubuntu 16.04.2(内核4.4.0-119-generic)上,用modinfo查看显示如下:

ddk@ddk:/lib/modules/4.4.0-119-generic/kernel/net/x25$ modinfo x25.ko
filename: /lib/modules/4.4.0-119-generic/kernel/net/x25/x25.ko
alias: net-pf-9
license: GPL
description: The X.25 Packet Layer network layer protocol
author: Jonathan Naylor <g4klx@g4klx.demon.co.uk>
srcversion: 1C330644067B6F5B4EA0703
depends:
intree: Y
vermagic: 4.4.0-119-generic SMP mod_unload modversions retpoline


在 4.15.0-15-generic 上,编译和执行ko,都没有问题。
现在的问题是: 在 4.4.0-119-generic上,因为vermagic多了retpoline,导致编译后的ko无法执行。这个怎么解决?

Re: repoline的问题:insmod一个简单ko,出现错误

发表于 : 2018-04-23 15:48
ddk3000
找到了一种解决方法:https://bugs.launchpad.net/ubuntu/+sour ... ug/1756506

修改头文件,增加 RETPOLINE 定义:
echo "#define RETPOLINE 1" >> /usr/src/linux-headers-3.13.0-143-generic/include/generated/utsrelease.h

编译内核模块ko,执行insmod成功。

Re: repoline的问题:insmod一个简单ko,出现错误

发表于 : 2020-11-12 16:33
tianjincheng
在路径/usr/src/linux-headers-4.4.0-142-generic/include/generated$
编辑utsrelease.h
加入一个宏定义 #define RETPOLINE 1
完美解决