summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWhi copybara merger <whitechapel-automerger@google.com>2021-06-16 20:43:58 +0800
committerSharad Bagri <sharadbagri@google.com>2021-06-22 18:09:10 +0000
commit92c88bb51863bba72a85ef60569440c6118bf2e9 (patch)
tree560e4349cf2df5963ecccd70ac99e14b31f0f64d
parentf5ae5699d42449c79ff95e52d393d2a539015abb (diff)
downloadabrolhos-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.h54
-rw-r--r--drivers/edgetpu/edgetpu-device-group.c9
-rw-r--r--drivers/edgetpu/edgetpu.h20
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__ */