unbutun
发表于 2010-07-22 22:17
如果发现了bug,提出问题,到被接受,再到生成patch,提到kernel里的步骤是怎样的?
哪位走过这个来说说
adam8157
发表于 2010-07-22 23:34
内核新新手...
qiwei9743
发表于 2010-07-22 23:46
发现过一个,在2.6.18里,貌似2.6.31里面还没有人解
T-Bagwell
发表于 2010-07-23 00:02
如果发现了bug,提出问题,到被接受,再到生成patch,提到kernel里的步骤是怎样的?
哪位走过这个来说说
unbutun 发表于 2010-07-22 22:17 http://linux.chinaunix.net/bbs/images/common/back.gif
是这么做的
# git branch
* master
#
#
# git-branch
* master
# git-branch Test
# git-branch
Test
* master
# git-checkout Test
Switched to branch 'Test'
#git-config user.name T-Bagwell
# git-config user.email liuqi@thunderst.com
# vim fs/ext4/super.c
# git-commit fs/ext4/super.c -m "test path for CUer"
test path for CUer
1 files changed, 2 insertions(+), 1 deletions(-)
# git-format-patch -s master
0001-test-path-for-CUer.patch
# cat 0001-test-path-for-CUer.patch
From 5fca2f3af4bd57cba0b7bc751a92d3328fa0b5c2 Mon Sep 17 00:00:00 2001
From: T-Bagwell <liuqi@thunderst.com>
Date: Fri, 23 Jul 2010 03:47:30 +0800
Subject: test path for CUer
Signed-off-by: T-Bagwell <liuqi@thunderst.com>
---
fs/ext4/super.c | 3 ++-
1 files changed, 2 insertions(+), 1 deletions(-)
diff --git a/fs/ext4/super.c b/fs/ext4/super.c
index 4e8983a..db19a9b 100644
--- a/fs/ext4/super.c
+++ b/fs/ext4/super.c
@@ -15,7 +15,8 @@
*Big-endian to little-endian byte-swapping/bitmaps by
* David S. Miller (davem@caip.rutgers.edu), 1995
*/
-
+// example to test
+// for a patch to cuer
#include <linux/module.h>
#include <linux/string.h>
#include <linux/fs.h>
--
1.7.1
#vim 0001-test-path-for-CUer.patch
然后在里面添加一下修改的内容的详细说明,比如修改了什么bug
一般是将Subject: test path for CUer往上的几行删掉
接着将内容发mail给MAINTAINERS里面介绍的负责相关的人,抄送给kernel的maillist,项目负责的maillist,接着就可以了,勤在maillist里面交流学习就差不多理解里面的过程了
T-Bagwell
发表于 2010-07-23 00:04
发现过一个,在2.6.18里,貌似2.6.31里面还没有人解
qiwei9743 发表于 2010-07-22 23:46 http://linux.chinaunix.net/bbs/images/common/back.gif
能否详细说说呢?
unbutun
发表于 2010-07-23 02:02
谢谢了
openspace
发表于 2010-07-23 07:44
发现过bug
有些是dead code,有些是细微的逻辑问题(在锁的使用上可以优化一下)
kernel也是软件,是软件就会有bug
要不要那么多做IT的干啥
openspace
发表于 2010-07-23 07:46
回复 4# platinum
这个确实比较麻烦
一直把kernel看得比较神秘
加上它各个子系统之间复杂的关系
有时候很难理会到一些做法
特别是有些ifdef等的判断,都不知道啥时候会出现这些情况
不过可以给作者或者相关的maillist发信问问
独孤九贱
发表于 2010-07-23 09:07
发现过两个,都是在实际应用中,内核oops了。然后根据oop信息追溯而至。
一个是路由子系统中,一个应用unsign而用成了int的地方,导致流量一大,此变量就溢出了,系统就死掉了。
另一个pptp helper的一个bug,在某种情况下会被触发导致内核死掉。
后来花了很多的时间修复它们,结果最后发现高版本的内核已经把它们都修正了。从此养成了阅读kernel ChangLog的习惯。
jerrymy
发表于 2010-07-23 09:21
离读内核代码还远呢。