1
0
mirror of https://github.com/aircrack-ng/rtl8812au.git synced 2024-11-22 13:24:36 +00:00

Fix kernel 5.10-rc1

This commit is contained in:
Carlos 2020-11-08 12:25:43 +00:00
parent e9fbf5c051
commit ee9619ba0c
4 changed files with 54 additions and 25 deletions

View File

@ -1443,7 +1443,9 @@ u8 rtw_btcoex_sendmsgbysocket(_adapter *padapter, u8 *msg, u8 msg_size, bool for
{ {
u8 error; u8 error;
struct msghdr udpmsg; struct msghdr udpmsg;
#ifdef set_fs
mm_segment_t oldfs; mm_segment_t oldfs;
#endif
struct iovec iov; struct iovec iov;
struct bt_coex_info *pcoex_info = &padapter->coex_info; struct bt_coex_info *pcoex_info = &padapter->coex_info;
@ -1473,15 +1475,18 @@ u8 rtw_btcoex_sendmsgbysocket(_adapter *padapter, u8 *msg, u8 msg_size, bool for
udpmsg.msg_control = NULL; udpmsg.msg_control = NULL;
udpmsg.msg_controllen = 0; udpmsg.msg_controllen = 0;
udpmsg.msg_flags = MSG_DONTWAIT | MSG_NOSIGNAL; udpmsg.msg_flags = MSG_DONTWAIT | MSG_NOSIGNAL;
#ifdef set_fs
oldfs = get_fs(); oldfs = get_fs();
set_fs(KERNEL_DS); set_fs(KERNEL_DS);
#endif
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 1, 0)) #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 1, 0))
error = sock_sendmsg(pcoex_info->udpsock, &udpmsg); error = sock_sendmsg(pcoex_info->udpsock, &udpmsg);
#else #else
error = sock_sendmsg(pcoex_info->udpsock, &udpmsg, msg_size); error = sock_sendmsg(pcoex_info->udpsock, &udpmsg, msg_size);
#endif #endif
#ifdef set_fs
set_fs(oldfs); set_fs(oldfs);
#endif
if (error < 0) { if (error < 0) {
RTW_INFO("Error when sendimg msg, error:%d\n", error); RTW_INFO("Error when sendimg msg, error:%d\n", error);
return _FAIL; return _FAIL;

View File

@ -4744,7 +4744,9 @@ int rtw_dev_nlo_info_set(struct pno_nlo_info *nlo_info, pno_ssid_t *ssid,
int i = 0; int i = 0;
struct file *fp; struct file *fp;
#ifdef set_fs
mm_segment_t fs; mm_segment_t fs;
#endif
loff_t pos = 0; loff_t pos = 0;
u8 *source = NULL; u8 *source = NULL;
long len = 0; long len = 0;
@ -4780,10 +4782,10 @@ int rtw_dev_nlo_info_set(struct pno_nlo_info *nlo_info, pno_ssid_t *ssid,
RTW_INFO("Error, cipher array using default value.\n"); RTW_INFO("Error, cipher array using default value.\n");
return 0; return 0;
} }
#ifdef set_fs
fs = get_fs(); fs = get_fs();
set_fs(KERNEL_DS); set_fs(KERNEL_DS);
#endif
source = rtw_zmalloc(2048); source = rtw_zmalloc(2048);
if (source != NULL) { if (source != NULL) {
@ -4791,10 +4793,10 @@ int rtw_dev_nlo_info_set(struct pno_nlo_info *nlo_info, pno_ssid_t *ssid,
rtw_parse_cipher_list(nlo_info, source); rtw_parse_cipher_list(nlo_info, source);
rtw_mfree(source, 2048); rtw_mfree(source, 2048);
} }
#ifdef set_fs
set_fs(fs); set_fs(fs);
filp_close(fp, NULL); filp_close(fp, NULL);
#endif
RTW_INFO("-%s-\n", __func__); RTW_INFO("-%s-\n", __func__);
return 0; return 0;
} }

View File

@ -4029,7 +4029,9 @@ static int route_dump(u32 *gw_addr , int *gw_index)
struct msghdr msg; struct msghdr msg;
struct iovec iov; struct iovec iov;
struct sockaddr_nl nladdr; struct sockaddr_nl nladdr;
#ifdef set_fs
mm_segment_t oldfs; mm_segment_t oldfs;
#endif
char *pg; char *pg;
int size = 0; int size = 0;
@ -4067,16 +4069,18 @@ static int route_dump(u32 *gw_addr , int *gw_index)
msg.msg_control = NULL; msg.msg_control = NULL;
msg.msg_controllen = 0; msg.msg_controllen = 0;
msg.msg_flags = MSG_DONTWAIT; msg.msg_flags = MSG_DONTWAIT;
#ifdef set_fs
oldfs = get_fs(); oldfs = get_fs();
set_fs(KERNEL_DS); set_fs(KERNEL_DS);
#endif
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 1, 0)) #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 1, 0))
err = sock_sendmsg(sock, &msg); err = sock_sendmsg(sock, &msg);
#else #else
err = sock_sendmsg(sock, &msg, sizeof(req)); err = sock_sendmsg(sock, &msg, sizeof(req));
#endif #endif
#ifdef set_fs
set_fs(oldfs); set_fs(oldfs);
#endif
if (err < 0) if (err < 0)
goto out_sock; goto out_sock;
@ -4099,16 +4103,18 @@ restart:
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0)) #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0))
iov_iter_init(&msg.msg_iter, READ, &iov, 1, PAGE_SIZE); iov_iter_init(&msg.msg_iter, READ, &iov, 1, PAGE_SIZE);
#endif #endif
#ifdef set_fs
oldfs = get_fs(); oldfs = get_fs();
set_fs(KERNEL_DS); set_fs(KERNEL_DS);
#endif
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 7, 0)) #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 7, 0))
err = sock_recvmsg(sock, &msg, MSG_DONTWAIT); err = sock_recvmsg(sock, &msg, MSG_DONTWAIT);
#else #else
err = sock_recvmsg(sock, &msg, PAGE_SIZE, MSG_DONTWAIT); err = sock_recvmsg(sock, &msg, PAGE_SIZE, MSG_DONTWAIT);
#endif #endif
#ifdef set_fs
set_fs(oldfs); set_fs(oldfs);
#endif
if (err < 0) if (err < 0)
goto out_sock_pg; goto out_sock_pg;
@ -4178,15 +4184,18 @@ done:
msg.msg_controllen = 0; msg.msg_controllen = 0;
msg.msg_flags = MSG_DONTWAIT; msg.msg_flags = MSG_DONTWAIT;
#ifdef set_fs
oldfs = get_fs(); oldfs = get_fs();
set_fs(KERNEL_DS); set_fs(KERNEL_DS);
#endif
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 1, 0)) #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 1, 0))
err = sock_sendmsg(sock, &msg); err = sock_sendmsg(sock, &msg);
#else #else
err = sock_sendmsg(sock, &msg, sizeof(req)); err = sock_sendmsg(sock, &msg, sizeof(req));
#endif #endif
#ifdef set_fs
set_fs(oldfs); set_fs(oldfs);
#endif
if (err > 0) if (err > 0)
goto restart; goto restart;
} }

View File

@ -2164,11 +2164,21 @@ static int writeFile(struct file *fp, char *buf, int len)
{ {
int wlen = 0, sum = 0; int wlen = 0, sum = 0;
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 1, 0))
if (!(fp->f_mode & FMODE_CAN_WRITE))
#else
if (!fp->f_op || !fp->f_op->write) if (!fp->f_op || !fp->f_op->write)
#endif
return -EPERM; return -EPERM;
while (sum < len) { while (sum < len) {
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 14, 0))
wlen = kernel_write(fp, buf + sum, len - sum, &fp->f_pos);
#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 1, 0))
wlen = __vfs_write(fp, buf + sum, len - sum, &fp->f_pos);
#else
wlen = fp->f_op->write(fp, buf + sum, len - sum, &fp->f_pos); wlen = fp->f_op->write(fp, buf + sum, len - sum, &fp->f_pos);
#endif
if (wlen > 0) if (wlen > 0)
sum += wlen; sum += wlen;
else if (0 != wlen) else if (0 != wlen)
@ -2191,19 +2201,19 @@ static int isFileReadable(const char *path, u32 *sz)
{ {
struct file *fp; struct file *fp;
int ret = 0; int ret = 0;
#ifdef set_fs
mm_segment_t oldfs; mm_segment_t oldfs;
#endif
char buf; char buf;
fp = filp_open(path, O_RDONLY, 0); fp = filp_open(path, O_RDONLY, 0);
if (IS_ERR(fp)) if (IS_ERR(fp))
ret = PTR_ERR(fp); ret = PTR_ERR(fp);
else { else {
#ifdef set_fs
oldfs = get_fs(); oldfs = get_fs();
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 1, 0))
set_fs(KERNEL_DS); set_fs(KERNEL_DS);
#else #endif
set_fs(get_ds());
#endif
if (1 != readFile(fp, &buf, 1)) if (1 != readFile(fp, &buf, 1))
ret = PTR_ERR(fp); ret = PTR_ERR(fp);
@ -2215,8 +2225,9 @@ static int isFileReadable(const char *path, u32 *sz)
*sz = i_size_read(fp->f_dentry->d_inode); *sz = i_size_read(fp->f_dentry->d_inode);
#endif #endif
} }
#ifdef set_fs
set_fs(oldfs); set_fs(oldfs);
#endif
filp_close(fp, NULL); filp_close(fp, NULL);
} }
return ret; return ret;
@ -2232,22 +2243,23 @@ static int isFileReadable(const char *path, u32 *sz)
static int retriveFromFile(const char *path, u8 *buf, u32 sz) static int retriveFromFile(const char *path, u8 *buf, u32 sz)
{ {
int ret = -1; int ret = -1;
#ifdef set_fs
mm_segment_t oldfs; mm_segment_t oldfs;
#endif
struct file *fp; struct file *fp;
if (path && buf) { if (path && buf) {
ret = openFile(&fp, path, O_RDONLY, 0); ret = openFile(&fp, path, O_RDONLY, 0);
if (0 == ret) { if (0 == ret) {
RTW_INFO("%s openFile path:%s fp=%p\n", __FUNCTION__, path , fp); RTW_INFO("%s openFile path:%s fp=%p\n", __FUNCTION__, path , fp);
#ifdef set_fs
oldfs = get_fs(); oldfs = get_fs();
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 1, 0))
set_fs(KERNEL_DS); set_fs(KERNEL_DS);
#else
set_fs(get_ds());
#endif
ret = readFile(fp, buf, sz); ret = readFile(fp, buf, sz);
set_fs(oldfs); set_fs(oldfs);
#else
ret = readFile(fp, buf, sz);
#endif
closeFile(fp); closeFile(fp);
RTW_INFO("%s readFile, ret:%d\n", __FUNCTION__, ret); RTW_INFO("%s readFile, ret:%d\n", __FUNCTION__, ret);
@ -2271,22 +2283,23 @@ static int retriveFromFile(const char *path, u8 *buf, u32 sz)
static int storeToFile(const char *path, u8 *buf, u32 sz) static int storeToFile(const char *path, u8 *buf, u32 sz)
{ {
int ret = 0; int ret = 0;
#ifdef set_fs
mm_segment_t oldfs; mm_segment_t oldfs;
#endif
struct file *fp; struct file *fp;
if (path && buf) { if (path && buf) {
ret = openFile(&fp, path, O_CREAT | O_WRONLY, 0666); ret = openFile(&fp, path, O_CREAT | O_WRONLY, 0666);
if (0 == ret) { if (0 == ret) {
RTW_INFO("%s openFile path:%s fp=%p\n", __FUNCTION__, path , fp); RTW_INFO("%s openFile path:%s fp=%p\n", __FUNCTION__, path , fp);
#ifdef set_fs
oldfs = get_fs(); oldfs = get_fs();
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 1, 0))
set_fs(KERNEL_DS); set_fs(KERNEL_DS);
#else
set_fs(get_ds());
#endif
ret = writeFile(fp, buf, sz); ret = writeFile(fp, buf, sz);
set_fs(oldfs); set_fs(oldfs);
#else
ret = writeFile(fp, buf, sz);
#endif
closeFile(fp); closeFile(fp);
RTW_INFO("%s writeFile, ret:%d\n", __FUNCTION__, ret); RTW_INFO("%s writeFile, ret:%d\n", __FUNCTION__, ret);