История изменений
Исправление 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. Попробую - отпишусь.