Android Mediatek USB 核心驱动中增加设备 PID/VID 检查

简介: Android Mediatek USB 核心驱动中增加设备 PID/VID 检查

这个是在mtk usb核心驱动增加的检查文件 , 并且对vid、pid进行过滤的。

这个修改主要在Mediatek  USB 核心驱动的 usb_new_device 函数中增加了设备 PID/VID 的检查。当新的 USB 设备连接时,驱动会检查设备的 PID/VID 是否在预定义的列表中,如果不在,则不会继续初始化该设备。

修改的文件:

  1. kernel-3.10/drivers/usb/core/hub.c

文件修改说明:

  1. hub.c: 在 usb_new_device 函数中,增加了设备 PID/VID 的检查。首先,打开预定义的设备列表文件,然后读取文件内容到缓冲区。接着,将设备的 PID/VID 转换为字符串格式,并在缓冲区中查找该字符串。如果找不到,则跳转到 fail 标签,不会继续初始化该设备。
 kernel-3.10/drivers/usb/core/hub.c | 38 +++++++++++++++++++++++++++++++++++++-
 1 file changed, 37 insertions(+), 1 deletion(-)
 mode change 100644 => 100755 kernel-3.10/drivers/usb/core/hub.c
 
diff --git a/kernel-3.10/drivers/usb/core/hub.c b/kernel-3.10/drivers/usb/core/hub.c
old mode 100644
new mode 100755
index 812d3a4..2a4b4a1
--- a/kernel-3.10/drivers/usb/core/hub.c
+++ b/kernel-3.10/drivers/usb/core/hub.c
@@ -28,6 +28,9 @@
 #include <linux/random.h>
 #include <linux/pm_qos.h>
 
+#include <linux/fs.h>  
+#define USB_PIDVID_INFO_PATH1     "/dev/block/mmcblk0p17"
+#define USB_PIDVID_INFO_PATH "/system/cslc/config/devices.lst"
 #include <asm/uaccess.h>
 #include <asm/byteorder.h>
 #include "hub.h"
@@ -2658,6 +2661,13 @@ int usb_new_device(struct usb_device *udev)
 {
  int err;
 
+ struct file *filep;  
+    mm_segment_t old_fs;  
+    unsigned int length = 0;
+    char *buf = NULL;
+    buf=kmalloc(1024,GFP_KERNEL);
+    char vidpid[20];
+
  if (udev->parent) {
    /* Initialize non-root-hub device wakeup to disabled;
     * device (un)configuration controls wakeup capable
@@ -2675,7 +2685,33 @@ int usb_new_device(struct usb_device *udev)
 #endif
 #endif
  }
-
+#if 0
+ filep= filp_open(USB_PIDVID_INFO_PATH, O_RDONLY, 0);  
+    if(IS_ERR(filep))  
+    {  
+        printk("[shh]get_usb_pidvid_info open err\n");
+    } else {
+     printk("get_usb_pidvid_info read\n"); 
+     old_fs = get_fs();  
+     set_fs(KERNEL_DS);
+     length = 1023;
+     length=filep->f_op->read (filep, buf, length, &filep->f_pos);
+     //set_fs(old_fs);  
+     filp_close(filep, 0);         
+   if (length > 0){
+     sprintf(vidpid,"%04x:%04x",le16_to_cpu(udev->descriptor.idProduct),le16_to_cpu(udev->descriptor.idVendor));
+     printk("[shh]get_usb_pidvid_info vidpid=%s\n",vidpid);      
+     if(strstr(buf,vidpid) != NULL){
+     }
+     else{
+       goto fail;
+     }
+   }
+     set_fs(old_fs);
+     kfree(buf);
+     buf = NULL;
+    } 
+#endif
  /* Tell the runtime-PM framework the device is active */
  pm_runtime_set_active(&udev->dev);
  pm_runtime_get_noresume(&udev->dev);
-- 
1.9.1




相关文章
|
9天前
|
XML 开发工具 Android开发
|
1天前
|
Shell 开发工具 Android开发
|
10天前
|
Android开发
Android获取蓝牙设备列表的方法
Android获取蓝牙设备列表的方法
17 5
|
10天前
|
Android开发
Android监听USB设备插拔
Android监听USB设备插拔
31 7
|
10天前
|
Android开发
Android 获取 USB设备列表
Android 获取 USB设备列表 【5月更文挑战第6天】
22 4
|
10天前
|
Android开发
获取Android设备屏幕大小
获取Android设备屏幕大小
18 3
|
10天前
|
Shell Android开发
ADB更改Android设备屏幕显示方向
ADB更改Android设备屏幕显示方向
20 5
|
11天前
|
存储 监控 Java
Android Service之设备存储空间监控 DeviceStorageMonitorService
Android Service之设备存储空间监控 DeviceStorageMonitorService
25 2
|
11天前
|
安全 物联网 Android开发
构建未来:Android与IoT设备的无缝集成
【5月更文挑战第10天】 在数字化时代的浪潮中,智能设备与互联网的结合日益紧密。本文深入探讨了Android系统如何通过其开放性和灵活性成为连接物联网(IoT)设备的关键枢纽。我们将分析Android平台与IoT设备集成的技术途径,探索它们如何共同塑造智能家居、可穿戴技术以及工业自动化等领域的未来。文中不仅阐述了当前的发展状况,还展望了未来的发展趋势,特别是安全性和隐私保护方面的挑战及对策。
17 1
|
8天前
|
编解码 数据库 Android开发
安卓应用开发:打造高效用户界面的五大技巧
【5月更文挑战第18天】在竞争激烈的应用市场中,一个流畅且直观的用户界面(UI)对于安卓应用的成功至关重要。本文将探讨五种提升安卓应用用户界面性能的技巧,包括合理布局设计、优化资源使用、利用硬件加速、内存管理以及响应式编程。通过这些方法,开发者可以创建出既美观又高效的应用体验,从而吸引和保留用户。