diff options
author | Whi copybara merger <whitechapel-automerger@google.com> | 2021-06-16 20:43:58 +0800 |
---|---|---|
committer | Sharad Bagri <sharadbagri@google.com> | 2021-06-22 18:09:10 +0000 |
commit | 92c88bb51863bba72a85ef60569440c6118bf2e9 (patch) | |
tree | 560e4349cf2df5963ecccd70ac99e14b31f0f64d | |
parent | f5ae5699d42449c79ff95e52d393d2a539015abb (diff) | |
download | abrolhos-92c88bb51863bba72a85ef60569440c6118bf2e9.tar.gz |
[Copybara Auto Merge] Merge branch 'whitechapel' into android-gs-pixel-5.10
edgetpu: fix memory leak in alloc_mapping_from_useraddr
GitOrigin-RevId: 6d7038802247d109a9a89d703332fc232f7c9769
Change-Id: I8eb1c380880b8530a2b15acaea3dcc0ad71da413
-rw-r--r-- | drivers/edgetpu/abrolhos-firmware.h | 54 | ||||
-rw-r--r-- | drivers/edgetpu/edgetpu-device-group.c | 9 | ||||
-rw-r--r-- | drivers/edgetpu/edgetpu.h | 20 |
3 files changed, 7 insertions, 76 deletions
diff --git a/drivers/edgetpu/abrolhos-firmware.h b/drivers/edgetpu/abrolhos-firmware.h deleted file mode 100644 index 8e7db77..0000000 --- a/drivers/edgetpu/abrolhos-firmware.h +++ /dev/null @@ -1,54 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0 */ -/* - * Implements utilities for firmware management of Abrolhos. - * - * Copyright (C) 2020 Google, Inc. - */ -#ifndef __ABROLHOS_FIRMWARE_H__ -#define __ABROLHOS_FIRMWARE_H__ - -#include <linux/sizes.h> - -#include "edgetpu-internal.h" -#include "edgetpu.h" - -/* abrolhos FW header size */ -#define ABROLHOS_FW_HEADER_SIZE SZ_4K -/* The offset to the signed firmware header. */ -#define ABROLHOS_HEADER_OFFSET 0x400 -/* The offset to image configuration. */ -#define ABROLHOS_IMAGE_CONFIG_OFFSET (ABROLHOS_HEADER_OFFSET + 0x160) - -/* - * The image configuration attached to the signed firmware. - */ -struct abrolhos_image_config { - __u32 carveout_base; - __u32 firmware_base; - __u32 firmware_size; - struct edgetpu_fw_version firmware_versions; -} __packed; - -/* - * Abrolhos firmware header. - */ -struct abrolhos_image_header { - char sig[512]; - char pub[512]; - int Magic; - int Generation; - int RollbackInfo; - int Length; - char Flags[16]; - char BodyHash[32]; - char ChipId[32]; - char AuthConfig[256]; - struct abrolhos_image_config ImageConfig; -}; - -int abrolhos_edgetpu_firmware_create(struct edgetpu_dev *etdev); -void abrolhos_edgetpu_firmware_destroy(struct edgetpu_dev *etdev); - -int abrolhos_edgetpu_firmware_run_default(struct edgetpu_dev *etdev); - -#endif /* __ABROLHOS_FIRMWARE_H__ */ diff --git a/drivers/edgetpu/edgetpu-device-group.c b/drivers/edgetpu/edgetpu-device-group.c index 57c0af5..97f3254 100644 --- a/drivers/edgetpu/edgetpu-device-group.c +++ b/drivers/edgetpu/edgetpu-device-group.c @@ -1267,8 +1267,13 @@ alloc_mapping_from_useraddr(struct edgetpu_device_group *group, u64 host_addr, return hmap; error_free_sgt: - while (i > 0) { - i--; + /* + * Starting from kernel version 5.10, the caller must call sg_free_table + * to clean up any leftover allocations if sg_alloc_table_from_pages + * returns non-0 for failures. Calling sg_free_table is also fine with + * older kernel versions since sg_free_table handles this properly. + */ + for (; i >= 0; i--) { if (i == 0) sgt = &hmap->map.sgt; else diff --git a/drivers/edgetpu/edgetpu.h b/drivers/edgetpu/edgetpu.h index b5a52c2..afa4fed 100644 --- a/drivers/edgetpu/edgetpu.h +++ b/drivers/edgetpu/edgetpu.h @@ -570,24 +570,4 @@ struct edgetpu_ext_mailbox_ioctl { #define EDGETPU_GET_FATAL_ERRORS \ _IOR(EDGETPU_IOCTL_BASE, 32, __u32) -/* Fatal error event bitmasks... */ -/* Firmware crash in non-restartable thread */ -#define EDGETPU_ERROR_FW_CRASH 0x1 -/* Host or device watchdog timeout */ -#define EDGETPU_ERROR_WATCHDOG_TIMEOUT 0x2 -/* Thermal shutdown */ -#define EDGETPU_ERROR_THERMAL_STOP 0x4 -/* TPU hardware inaccessible: link fail, memory protection unit blocking... */ -#define EDGETPU_ERROR_HW_NO_ACCESS 0x8 -/* Various hardware failures */ -#define EDGETPU_ERROR_HW_FAIL 0x10 - -/* - * Return fatal errors raised for the client's device group, as a bitmask of - * the above fatal error event codes, or zero if no errors encountered or - * client is not part of a device group. - */ -#define EDGETPU_GET_FATAL_ERRORS \ - _IOR(EDGETPU_IOCTL_BASE, 32, __u32) - #endif /* __EDGETPU_H__ */ |