int trip, int *temp)
  {
        struct int34x_thermal_zone *d = zone->devdata;
 -      int i;
 +      int i, ret = 0;
 +
-       if (d->override_ops && d->override_ops->get_trip_temp)
-               return d->override_ops->get_trip_temp(zone, trip, temp);
- 
 +      mutex_lock(&d->trip_mutex);
  
        if (trip < d->aux_trip_nr)
                *temp = d->aux_trips[trip];
                                         enum thermal_trip_type *type)
  {
        struct int34x_thermal_zone *d = zone->devdata;
 -      int i;
 +      int i, ret = 0;
 +
-       if (d->override_ops && d->override_ops->get_trip_type)
-               return d->override_ops->get_trip_type(zone, trip, type);
- 
 +      mutex_lock(&d->trip_mutex);
  
        if (trip < d->aux_trip_nr)
                *type = THERMAL_TRIP_PASSIVE;
        if (!int34x_thermal_zone)
                return ERR_PTR(-ENOMEM);
  
 +      mutex_init(&int34x_thermal_zone->trip_mutex);
 +
        int34x_thermal_zone->adev = adev;
-       int34x_thermal_zone->override_ops = override_ops;
+ 
+       int34x_thermal_zone->ops = kmemdup(&int340x_thermal_zone_ops,
+                                          sizeof(int340x_thermal_zone_ops), GFP_KERNEL);
+       if (!int34x_thermal_zone->ops) {
+               ret = -ENOMEM;
+               goto err_ops_alloc;
+       }
+ 
+       if (get_temp)
+               int34x_thermal_zone->ops->get_temp = get_temp;
  
        status = acpi_evaluate_integer(adev->handle, "PATC", NULL, &trip_cnt);
        if (ACPI_FAILURE(status))
        acpi_lpat_free_conversion_table(int34x_thermal_zone->lpat_table);
        kfree(int34x_thermal_zone->aux_trips);
  err_trip_alloc:
+       kfree(int34x_thermal_zone->ops);
+ err_ops_alloc:
 +      mutex_destroy(&int34x_thermal_zone->trip_mutex);
        kfree(int34x_thermal_zone);
        return ERR_PTR(ret);
  }
        thermal_zone_device_unregister(int34x_thermal_zone->zone);
        acpi_lpat_free_conversion_table(int34x_thermal_zone->lpat_table);
        kfree(int34x_thermal_zone->aux_trips);
+       kfree(int34x_thermal_zone->ops);
 +      mutex_destroy(&int34x_thermal_zone->trip_mutex);
        kfree(int34x_thermal_zone);
  }
  EXPORT_SYMBOL_GPL(int340x_thermal_zone_remove);