LINUX.ORG.RU

История изменений

Исправление ZenitharChampion, (текущая версия) :

> MT7601

Кстати, можешь посмотреть, почему, когда я наложил патч на драйвер DPO_MT7601U_LinuxSTA_3.0.0.4_20130913, чтобы он собрался с новым ядром, приводит к мёртвому зависанию? И вообще, может это вообще не связано с драйвером, и причина в другом?

Суть. Вот ошибка компиляции:

home/xxxxx/driversx/os/linux/../../os/linux/rt_linux.c:1138:20: error:
incompatible types when assigning to type ‘int’ from type ‘kuid_t’
/home/xxxxx/driversx/os/linux/../../os/linux/rt_linux.c:1139:20: error:
incompatible types when assigning to type ‘int’ from type ‘kgid_t’
make[2]: *** [/home/xxxx/driversx/os/linux/../../os/linux/rt_linux.o]
Error 1

Проявляется с ядром Linux 3.12 и выше (у меня 3.17). Вот основной тред, в котором велось обсуждения проблемы. Сначала они просто закомментировали проблемный участок кода. Потом разобрались и поправили код, как надо. Потом я нашёл другой тред с другим патчем, на этот раз header-файла, а не rt_linux.c Все три патча:

--- a/os/linux/rt_linux.c	2020-05-24 11:07:01.000000000 +0300
+++ b/os/linux/rt_linux.c	2020-05-24 14:52:20.000000000 +0300
@@ -1118,8 +1118,8 @@
 		pOSFSInfo->fsgid = current->fsgid;
 		current->fsuid = current->fsgid = 0;
 #else
-		pOSFSInfo->fsuid = current_fsuid();
-		pOSFSInfo->fsgid = current_fsgid();
+		//pOSFSInfo->fsuid = current_fsuid();
+		//pOSFSInfo->fsgid = current_fsgid();
 #endif
 		pOSFSInfo->fs = get_fs();
 		set_fs(KERNEL_DS);
--- a/os/linux/rt_linux.c	2020-05-24 11:07:01.000000000 +0300
+++ b/os/linux/rt_linux.c	2020-05-24 14:52:20.000000000 +0300
@@ -1118,8 +1118,8 @@
 		pOSFSInfo->fsgid = current->fsgid;
 		current->fsuid = current->fsgid = 0;
 #else
-		pOSFSInfo->fsuid = current_fsuid();
-		pOSFSInfo->fsgid = current_fsgid();
+		pOSFSInfo->fsuid = current_fsuid().val;
+		pOSFSInfo->fsgid = current_fsgid().val;
 #endif
 		pOSFSInfo->fs = get_fs();
 		set_fs(KERNEL_DS);
--- a/include/os/rt_linux.h	2020-05-24 11:07:01.000000000 +0300
+++ b/include/os/rt_linux.h	2020-05-24 14:52:20.000000000 +0300
@@ -279,8 +279,8 @@ typedef struct file* RTMP_OS_FD;

 typedef struct _OS_FS_INFO_
 {
-   int             fsuid;
-   int             fsgid;
+   kuid_t              fsuid;
+   kgid_t              fsgid;
    mm_segment_t    fs;
 } OS_FS_INFO;

Ну так вот, со всеми тремя патчами система работает пару минут после подгрузки модуля и подключения к точке доступа, а потом мёртвое зависание.

Вообще это странно, потому что в других дистрах и у других людей всё работает.

Вот остальные ссылки [1] [2] [3] А вообще, на сайте TP-Link я нашёл более новый драйвер, чем на сайте MediaTek - пишут что проверено на Linux 2.6~3.16. Попробую - отпишусь.

Исправление ZenitharChampion, :

> MT7601

Кстати, можешь посмотреть, почему, когда я наложил патч на драйвер DPO_MT7601U_LinuxSTA_3.0.0.4_20130913, чтобы он собрался с новым ядром, приводит к мёртвому зависанию? И вообще, может это вообще не связано с драйвером, и причина в другом?

Суть. Вот ошибка компиляции:

home/xxxxx/driversx/os/linux/../../os/linux/rt_linux.c:1138:20: error:
incompatible types when assigning to type ‘int’ from type ‘kuid_t’
/home/xxxxx/driversx/os/linux/../../os/linux/rt_linux.c:1139:20: error:
incompatible types when assigning to type ‘int’ from type ‘kgid_t’
make[2]: *** [/home/xxxx/driversx/os/linux/../../os/linux/rt_linux.o]
Error 1

Проявляется с ядром Linux 3.12 и выше (у меня 3.17). Вот основной тред, в котором велось обсуждения проблемы. Сначала они просто закомментировали проблемный участок кода. Потом разобрались и поправили код, как надо. Потом я нашёл другой тред с другим патчей,на этот раз header-файла, а не rt_linux.c Все три патча:

--- a/os/linux/rt_linux.c	2020-05-24 11:07:01.000000000 +0300
+++ b/os/linux/rt_linux.c	2020-05-24 14:52:20.000000000 +0300
@@ -1118,8 +1118,8 @@
 		pOSFSInfo->fsgid = current->fsgid;
 		current->fsuid = current->fsgid = 0;
 #else
-		pOSFSInfo->fsuid = current_fsuid();
-		pOSFSInfo->fsgid = current_fsgid();
+		//pOSFSInfo->fsuid = current_fsuid();
+		//pOSFSInfo->fsgid = current_fsgid();
 #endif
 		pOSFSInfo->fs = get_fs();
 		set_fs(KERNEL_DS);
--- a/os/linux/rt_linux.c	2020-05-24 11:07:01.000000000 +0300
+++ b/os/linux/rt_linux.c	2020-05-24 14:52:20.000000000 +0300
@@ -1118,8 +1118,8 @@
 		pOSFSInfo->fsgid = current->fsgid;
 		current->fsuid = current->fsgid = 0;
 #else
-		pOSFSInfo->fsuid = current_fsuid();
-		pOSFSInfo->fsgid = current_fsgid();
+		pOSFSInfo->fsuid = current_fsuid().val;
+		pOSFSInfo->fsgid = current_fsgid().val;
 #endif
 		pOSFSInfo->fs = get_fs();
 		set_fs(KERNEL_DS);
--- a/include/os/rt_linux.h	2020-05-24 11:07:01.000000000 +0300
+++ b/include/os/rt_linux.h	2020-05-24 14:52:20.000000000 +0300
@@ -279,8 +279,8 @@ typedef struct file* RTMP_OS_FD;

 typedef struct _OS_FS_INFO_
 {
-   int             fsuid;
-   int             fsgid;
+   kuid_t              fsuid;
+   kgid_t              fsgid;
    mm_segment_t    fs;
 } OS_FS_INFO;

Ну так вот, со всеми тремя патчами система работает пару минут после подгрузки модуля и подключения к точке доступа, а потом мёртвое зависание.

Вообще это странно, потому что в других дистрах и у других людей всё работает.

Вот остальные ссылки [1] [2] [3] А вообще, на сайте TP-Link я нашёл более новый драйвер, чем на сайте MediaTek - пишут что проверено на Linux 2.6~3.16. Попробую - отпишусь.

Исправление ZenitharChampion, :

> MT7601

Кстати, можешь посмотреть, почему, когда я наложил патч на драйвер DPO_MT7601U_LinuxSTA_3.0.0.4_20130913, чтобы он собрался с новым ядром, приводит к мёртвому зависанию? И вообще, может это вообще не связано с драйвером, и причина в другом?

Суть. Вот ошибка компиляции:

home/xxxxx/driversx/os/linux/../../os/linux/rt_linux.c:1138:20: error:
incompatible types when assigning to type ‘int’ from type ‘kuid_t’
/home/xxxxx/driversx/os/linux/../../os/linux/rt_linux.c:1139:20: error:
incompatible types when assigning to type ‘int’ from type ‘kgid_t’
make[2]: *** [/home/xxxx/driversx/os/linux/../../os/linux/rt_linux.o]
Error 1

Проявляется с ядром Linux 3.12 и выше (у меня 3.17). Вот основной тред, в котором велось обсуждения проблемы. Сначала они просто закомментировали проблемный участок кода. Потом разобрались и поправили код, как надо. Все три патча выглядят так:

--- a/os/linux/rt_linux.c	2020-05-24 11:07:01.000000000 +0300
+++ b/os/linux/rt_linux.c	2020-05-24 14:52:20.000000000 +0300
@@ -1118,8 +1118,8 @@
 		pOSFSInfo->fsgid = current->fsgid;
 		current->fsuid = current->fsgid = 0;
 #else
-		pOSFSInfo->fsuid = current_fsuid();
-		pOSFSInfo->fsgid = current_fsgid();
+		//pOSFSInfo->fsuid = current_fsuid();
+		//pOSFSInfo->fsgid = current_fsgid();
 #endif
 		pOSFSInfo->fs = get_fs();
 		set_fs(KERNEL_DS);
--- a/os/linux/rt_linux.c	2020-05-24 11:07:01.000000000 +0300
+++ b/os/linux/rt_linux.c	2020-05-24 14:52:20.000000000 +0300
@@ -1118,8 +1118,8 @@
 		pOSFSInfo->fsgid = current->fsgid;
 		current->fsuid = current->fsgid = 0;
 #else
-		pOSFSInfo->fsuid = current_fsuid();
-		pOSFSInfo->fsgid = current_fsgid();
+		pOSFSInfo->fsuid = current_fsuid().val;
+		pOSFSInfo->fsgid = current_fsgid().val;
 #endif
 		pOSFSInfo->fs = get_fs();
 		set_fs(KERNEL_DS);
--- a/include/os/rt_linux.h	2020-05-24 11:07:01.000000000 +0300
+++ b/include/os/rt_linux.h	2020-05-24 14:52:20.000000000 +0300
@@ -279,8 +279,8 @@ typedef struct file* RTMP_OS_FD;

 typedef struct _OS_FS_INFO_
 {
-   int             fsuid;
-   int             fsgid;
+   kuid_t              fsuid;
+   kgid_t              fsgid;
    mm_segment_t    fs;
 } OS_FS_INFO;

Обрати внимание, что в третьем патче патчат header-файл, а не сам rt_linux.c. Ну так вот, со всеми тремя патчами система работает пару минут после подгрузки модуля и подключения к точке доступа, а потом мёртвое зависание.

Вообще это странно, потому что в других дистрах и у других людей всё работает.

Вот остальные ссылки [1] [2] [3] А вообще, на сайте TP-Link я нашёл более новый драйвер, чем на сайте MediaTek - пишут что проверено на Linux 2.6~3.16. Попробую - отпишусь.

Исходная версия ZenitharChampion, :

> MT7601

Кстати, можешь посмотреть, почему, когда я наложил патч на драйвер DPO_MT7601U_LinuxSTA_3.0.0.4_20130913, чтобы он собрался с новым ядром, приводит к мёртвому зависанию? И вообще, может это вообще не связано с драйвером, и причина в другом?

Суть. Вот ошибка компиляции:

home/xxxxx/driversx/os/linux/../../os/linux/rt_linux.c:1138:20: error:
incompatible types when assigning to type ‘int’ from type ‘kuid_t’
/home/xxxxx/driversx/os/linux/../../os/linux/rt_linux.c:1139:20: error:
incompatible types when assigning to type ‘int’ from type ‘kgid_t’
make[2]: *** [/home/xxxx/driversx/os/linux/../../os/linux/rt_linux.o]
Error 1

Проявляется с ядром Linux 3.12 и выше (у меня 3.17). Вот основной тред, в котором велось обсуждения проблемы. Сначала они просто закомментировали проблемный участок кода. Потом разобрались и поправили код, как надо. Все три патча выглядят так:

--- a/os/linux/rt_linux.c	2020-05-24 11:07:01.000000000 +0300
+++ b/os/linux/rt_linux.c	2020-05-24 14:52:20.000000000 +0300
@@ -1118,8 +1118,8 @@
 		pOSFSInfo->fsgid = current->fsgid;
 		current->fsuid = current->fsgid = 0;
 #else
-		pOSFSInfo->fsuid = current_fsuid();
-		pOSFSInfo->fsgid = current_fsgid();
+		//pOSFSInfo->fsuid = current_fsuid();
+		//pOSFSInfo->fsgid = current_fsgid();
 #endif
 		pOSFSInfo->fs = get_fs();
 		set_fs(KERNEL_DS);
--- a/os/linux/rt_linux.c	2020-05-24 11:07:01.000000000 +0300
+++ b/os/linux/rt_linux.c	2020-05-24 14:52:20.000000000 +0300
@@ -1118,8 +1118,8 @@
 		pOSFSInfo->fsgid = current->fsgid;
 		current->fsuid = current->fsgid = 0;
 #else
-		pOSFSInfo->fsuid = current_fsuid();
-		pOSFSInfo->fsgid = current_fsgid();
+		pOSFSInfo->fsuid = current_fsuid().val;
+		pOSFSInfo->fsgid = current_fsgid().val;
 #endif
 		pOSFSInfo->fs = get_fs();
 		set_fs(KERNEL_DS);
--- a/include/os/rt_linux.h	2020-05-24 11:07:01.000000000 +0300
+++ b/include/os/rt_linux.h	2020-05-24 14:52:20.000000000 +0300
@@ -279,8 +279,8 @@ typedef struct file* RTMP_OS_FD;

 typedef struct _OS_FS_INFO_
 {
-   int             fsuid;
-   int             fsgid;
+   kuid_t              fsuid;
+   kgid_t              fsgid;
    mm_segment_t    fs;
 } OS_FS_INFO;

Обрати внимание, что в третьем патче патчат header-файл, а не сам rt_linux.c. Ну так вот, со всеми тремя патчами система работает пару минут после подгрузки модуля и подключения к точке доступа, а потом мёртвое зависание.

Вот остальные ссылки [1] [2] [3] А вообще, на сайте TP-Link я нашёл более новый драйвер, чем на сайте MediaTek - пишут что проверено на Linux 2.6~3.16. Попробую - отпишусь.